如何在一个循环中进行迭代以比较javascript中的两个对象

时间:2019-12-20 07:40:55

标签: javascript arrays object

我有两个对象,我想相互比较它们,就像我需要并行检查和赋值一样,但是为此,我只需要执行一个for循环,但我无法实现它。
下面是我的代码:

function traverseObject(object1, object2) {
  var key1;
  var key2;
  for (key1 in object1) {

    for (key2 in object2) {
      console.log('Key1 is -' + key1);
      //console.log('Key2 is -'+key2);
      if (object1.hasOwnProperty(key1) || object2.hasOwnProperty(key2)) {
        console.log('Value1 ' + object1[key1]);
        console.log('Value2 ' + object2[key2]);
        if ((object1[key1] !== null && typeof object1[key1] === 'object') || (object2[key2] !== null && typeof object2[key2] === 'object')) {
          process(object1[key1], object2[key2]);
        }
      }
    }
  }
}

Bu使用它首先运行外部循环,然后读取所有内部循环值,然后读取外部循环的第二个值,然后再次读取内部循环的所有值。
我想要的是,它可以同时运行,以便我可以比较它们的值。

1 个答案:

答案 0 :(得分:5)

您可以遍历两个对象中的所有键:

  for(const key of [...new Set(Object.keys(object1).concat(Object.keys(object2))]) {
    if(key in object2) process(object1[key], object2[key]);
  }