【问题标题】:Loop through array with objects使用对象循环遍历数组
【发布时间】:2017-09-07 06:35:34
【问题描述】:

我现在有 2 天无法解决以下问题。我有一个array

我尝试用 next for..in 循环遍历它

for (var key in products2) {
    if (products2.hasOwnProperty(key)) {
        console.log(products2[key].properties);
    }
}

但我无法输出属性对象的值。这个数组是一个产品列表,每个产品都有自己的属性。

【问题讨论】:

  • 试试jquery each --> $.each(product2,function(index,value){ ... })
  • 您遇到的错误是什么?
  • 你的产品是一个数组。使用forarray.forEach改进)。此外,理想情况下,您的代码应该可以工作。你能分享一下日志的输出吗?
  • 请添加数据,您正在处理。

标签: javascript jquery arrays for-loop


【解决方案1】:
for (var key in products2) {
    console.log(products2[key].properties);
}

produts2”数组中没有“Key”属性。关键变量是“products2”数组的索引。由于 if 条件未变为 True,因此控制台语句未得到执行。

【讨论】:

  • 那有什么解决办法呢?
  • key 是一个变量。 hasOwnProperty('key')hasOwnProperty(key) 是有区别的
  • 现在我的控制台中有一个对象 {width: 100, height: 100, color: red},接下来我应该使用 for 循环遍历 products2[key].properties?
  • 你能分享对象(products2)
【解决方案2】:

你可以使用 Lodash:

_.forEach([1, 2], function(value, index) {
    console.log(value, index);
});

或者你可以使用 JavaScript:

var array = [1, 2]
for (var i in array) {
   alert(array[i]);
}

【讨论】:

    【解决方案3】:

    它看起来像一个包含对象的数组。

    [{...}, {...}, {...}, ...]
    

    要迭代元素,您可以使用Array#forEach

    products2.forEach(function (o) {
        Object.keys(o).forEach(function (k) {
            console.log(k, o[k]); // show key and value
        });
    });
    

    【讨论】:

    • 所以如果我理解正确,所有 OP 都缺少for..in 而不是properties。对吗?
    • @Rajesh,也许是一些控制台视图的图片......我不喜欢和他们一起工作,他们可能会误导。
    • 老实说,在这种情况下,我宁愿不回答,因为读者很难将这些点联系起来,这会吸引像这样不受欢迎的 cmets。但这只是我的 POV。
    【解决方案4】:

    首先,使用 JSON.parse(product2) 将其转换为对象,然后使用您的代码

    【讨论】:

      【解决方案5】:

      试试这个

      for (var i in products2) {
        for (key in products2[i]) {
          console.log(key + ":" + products2[i][key]);
        }
      }
      

      你有一个对象数组。所以首先你必须遍历数组项,然后你可以遍历它的键。

      【讨论】:

        猜你喜欢
        • 2016-09-07
        • 1970-01-01
        • 2019-12-16
        • 1970-01-01
        • 2016-07-28
        • 2017-01-29
        • 2015-10-15
        相关资源
        最近更新 更多