首页 > 解决方案 > How do I loop an array of objects and return it's value inside the array?

问题描述

For some reason it's returning both the key and value an excessive number of times. What am I doing wrong?

function loopAnArrayOfObjects(arrayOfObjects) {
  for (var i = 0; i < arrayOfObjects.length; i++) {
      for (var key in arrayOfObjects) {
          console.log(arrayOfObjects[key]);
      }
  }
}

loopAnArrayOfObjects([{a: 1, b: 2}, {z: 5, y: 6}, {q: 14} ]);
// expected console output:
  // 1
  // 2
  // 5
  // 6
  // 14

loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);
// expected console output:
  // false
  // true
  // swims
  // s
  // p
  // e

标签: javascriptarrays

解决方案


在每次迭代中,当前元素/对象是arrayOfObjects[i],这是您应该使用的。

function loopAnArrayOfObjects(arrayOfObjects) {
  for (var i = 0; i < arrayOfObjects.length; i++) {
      for (var key in arrayOfObjects[i]) {
          console.log(arrayOfObjects[i][key]);
      }
  }
}
loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);

或者,您可以使用for ... of仅遍历没有索引的元素。

function loopAnArrayOfObjects(arrayOfObjects) {
  for(const obj of arrayOfObjects){
      for (const key in obj) {
          console.log(obj[key]);
      }
  }
}
loopAnArrayOfObjects([{queue: false, stack: true}, {fish: 'swims'}, {shirt: 's', pop: 'p', eye: 'e'} ]);


推荐阅读