【问题标题】:How to loop over properties of objects at the same time in Javascript?如何在Javascript中同时循环对象的属性?
【发布时间】:2016-04-13 13:03:34
【问题描述】:

我试图弄清楚如何同时循环两个对象,以便比较它们的属性。我尝试的是类似

for ((prop1, prop2) in (obj1, obj2) {
    console.log(prop1 == prop2)
}

这绝对是行不通的。在js中怎么做呢?

【问题讨论】:

    标签: javascript object for-loop


    【解决方案1】:

    基本来说,是这样的:

    var obj1 = {
        prop1: 'prop1',
        prop2: 'prop2'
    };
    
    var obj2 = {
        prop1: 'prop1',
        prop2: 'prop2',
        prop3: 'prop3'
    };
    
    for (var prop in obj1) {
        console.log(prop, obj1[prop] == obj2[prop]);
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用Object.keys()Object.assign() 函数。

      Object.keys(Object.assign({}, obj1, obj2)).forEach(function(key) {
          var prop1 = obj1[key];
          var prop2 = obj2[key];
          console.log(prop1 == prop2);
      });
      

      注意:检查 Object.assign() 函数的浏览器兼容性。目前IE不支持。

      【讨论】:

        【解决方案3】:

        你不能,你需要在 2 for 做。

        for (var prop1 in obj1) {
          for(var prop2 in obj2)
            console.log(prop1 == prop2);
        }
        

        你也可以试试,不用 2 个循环:

        for (var prop1 in obj1) {
          console.log(obj2[prop1] === undefined);
        }
        

        【讨论】:

        • 我为什么要检查它是否未定义?
        • @AlanH:如果 obj2[prop1] 未定义,则表示 obj2 没有 prop1 属性。
        猜你喜欢
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-11
        • 2020-08-02
        • 2012-10-03
        相关资源
        最近更新 更多