访问对象数组中的值?

时间:2017-04-21 18:26:18

标签: javascript

我已经看到了很多不同的方法来访问对象数组中的值。一个是arr.forEach(Function),其中函数只是for...in

但我很好奇,为什么两个for...in函数不起作用,例如:

[{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }]

(取自freeCodeCamp)。

这有效:

function myFunction (item, index) {

  for( var key in item ) {
    console.log(item[key])
  }
}

arr.forEach(myFunction(打印所有值都很好)

但是为什么这不起作用:

for(key in arr)
{
   for(value in key)
   {
    console.log(key[value];
   }
}

我认为这样可行,因为我们可以执行arr [key](并在外循环中打印出对象,但我无法以这种方式访问​​这些值)

编辑:

旁注:我是否可以打印出每个子键/值对:IE例如在数组索引0上打印出来"first: "Romeo"然后打印"last: "Montague"

3 个答案:

答案 0 :(得分:3)

  

但是为什么这不起作用:

因为在这种情况下key将是string,而不是数组的元素。

您不应使用for..in来迭代数组:MDN

较新版本的JavaScript(ECMAScript)提供了使用for..of循环的功能,这些循环非常适合迭代数组:

for (var item of arr) {
    console.log(item);
}

答案 1 :(得分:1)

它不起作用,因为第二个key中的for ... in是动态的,在第一个示例中你不能item.key的原因相同

答案 2 :(得分:0)

您需要循环遍历数组的索引,然后遍历数组项的键。

var array = [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }],
    key, index;

for (index = 0; index < array.length; index++) {
   for(key in array[index]) {
      console.log(array[index][key]);
   }
}