如何将两个对象之间字段值的变化放入变量中?

How can I put into a variable a change in field values between two objects?

本文关键字:变化 变量 字段 之间 对象 两个      更新时间:2023-09-26

我有以下两个对象,它们将始终具有相同的字段数量/名称:

var a = {
           c: 25,
           field1: 10,
           field2: 20,
           field3: "x"
         }
var b = {
           c: 25,
           field1: 10,
           field2: 22,
           field3: "y"
         }

如果字段发生了变化我是否可以将其放入一个变量中我有一个变量来显示它它包含了像

这样的文本
var changes = "field2: 20 > 22,  field3: x > y"

我认为我需要做的是以某种方式迭代每个字段的值并进行比较,但我不确定如何使用Javascript。

使用如何循环或枚举JavaScript对象?,循环遍历属性并将其与另一个对象中的属性进行比较:

for (var key in a) {
  if (a.hasOwnProperty(key)) {   
      if(b[key] != a[key]) {
          //values are are different, handle difference
      }
  }
}

hasOwnProperty检查是为了确保我们没有处理来自对象原型的属性。这可能是相关的,也可能是不相关的,这取决于你的对象是如何构建和使用的。

请注意IE8的新版本不支持hasOwnProperty