访问对象javascript中的数组

访问对象javascript中的数组,javascript,arrays,for-loop,dynamic-arrays,for-in-loop,Javascript,Arrays,For Loop,Dynamic Arrays,For In Loop,我的目标如下: myObject: { myArray1: [1,2,3], myArray2: [4,5,6], myArray3: [7,8,9] } 这是一个在数组中不断增长的对象(动态数组?)。所以我需要找到一种方法来访问它。我遇到过使用for(myObject中的var键)的情况,如下所示: for (var key in myObject) { var obj = myObject[key]; for (var prop in obj) {

我的目标如下:

myObject: {

 myArray1: [1,2,3],
 myArray2: [4,5,6],
 myArray3: [7,8,9]
}
这是一个在数组中不断增长的对象(动态数组?)。所以我需要找到一种方法来访问它。我遇到过使用for(myObject中的var键)的情况,如下所示:

    for (var key in myObject) {
     var obj = myObject[key];
       for (var prop in obj) {
           //thinking that this will print the first value of the array
       console.log(prop[0]);
     }
    }
但它不起作用,它打印的是未定义的。我知道在中使用for不是正确访问对象的方法。我想知道是否有人可以建议一种通过循环访问这个对象的值的方法


谢谢

在中使用
for..迭代对象是可以的,但不是数组。因为当你对数组使用
for..in
时,它不会得到数组值,而是数组索引。所以,你应该这样做

for (var key in myObject) {
    var currentArray = myObject[key];
    for(var i = 0; i < currentArray.length; i += 1) {
        console.log(currentArray[i]);
    }
}
for(myObject中的var键){
var currentArray=myObject[key];
对于(变量i=0;i
您在第二个循环中犯了一个错误。obj是数组,prop是索引

for (var key in myObject) {
  var obj = myObject[key];
   for (var prop in obj) {
       //this will print the first value of the array
   console.log(obj[prop]); //obj is the array and prop is the index
 }
} 

prop
是数组的索引,而不是数组
obj
是数组。因此,它应该是:

console.log(obj[prop]); 

这很有效。我想这是正确的方法???@Mauricosanchez事实上,这就是数组迭代的方式(或者
Array.forEach
)。千万不要对数组使用
for..in
。虽然vivek_nk建议的方法也适用。我想这是一个更好的编码实践的问题???@Mauricosanchez好吧,如果你真的知道你在做什么,那很好。但是不要在数组中使用
for..in
。@Mauricosanchez也阅读了这篇文章。它说明了为什么你不应该使用这种方法。可能重复的原因是为什么你认为
for…in
对对象的作用不同于对数组的作用?@FelixKling这很有趣。我想出于某种原因,它不被推荐。我不记得我在哪里读到的。嗯,是的,你不应该在数组中使用
for..in
,但这并不意味着它对数组的作用与对对象的作用不同。@FeliKling现在对我来说有意义了。当数据未知时,您的链接对于如何在中使用非常有用