Javascript对象数组循环未交互

时间:2019-01-03 19:43:51

标签: javascript arrays javascript-objects

我遇到for循环的问题。问题是我有一个for穿过一个对象,并且只穿过该数组一次。如何遍历整个对象数组循环?当前代码如下:

var i = 0;
for (var key in data) {
  console.log(data[key].allProducts[i]);
  i++;
}

2 个答案:

答案 0 :(得分:0)

好吧,既然您在这里使用索引,为什么不立即使用for...of循环呢?那么您就不需要访问属性本身了

根据您的data对象,您可能需要使用Object.values( data )或坚持以前的for...in循环,但我想原理很明确:)

const data = {
 group1: {
  allProducts: [
    { id: 1, name: 'product 1' },
    { id: 2, name: 'product 2' },
    { id: 3, name: 'product 3' },
    { id: 4, name: 'product 4' }
  ]
 },
 group2: {
  allProducts: [
    { id: 5, name: 'product 5' }
  ]
 }
};

for (let item of Object.values( data) ) {
  for (let product of item.allProducts) {
    console.log(product);
  }
}

答案 1 :(得分:-1)

只有一个循环试图控制两个变量,而这并不是您要尝试的。假设数据键类似于['a', 'b', 'c'],实际上您实际上是在获取数据['a'] [1],数据['b'] [2],数据['c'] [3]。

您需要两个嵌套循环:

for (var key in data) {
    var productsLength = data[key].allProducts.length;
    for (var i = 0; i < productsLength; i++) {
        console.log(data[key].allProducts[i]);
    }
}