Javascript数组循环变量未定义

问题描述:

我有一点麻烦的循环读取数组:Javascript数组循环变量未定义

var myStringArray = [{ 
    "people": [{ 
    "id": "123", 
    "name": "name 1" 
    }, { 
    "id": "456", 
    "name": "name 2" 
    }] 
}]; 

var arrayLength = myStringArray.length; 

for (var i = 0; i < arrayLength; i++) {    
    console.log(myStringArray[i].id); 
} 

我要去哪里错了吗?

+2

你不够深刻......'myStringArray [0] .people [i] .id'。 ;) – evolutionxbox

+1

和'var arrayLength = myStringArray [0] .people.length'; – taguenizy

您需要遍历内部数组(第一个元素在主数组中的people属性)。

var myStringArray = [{ 
 
    "people": [{ 
 
    "id": "123", 
 
    "name": "name 1" 
 
    }, { 
 
    "id": "456", 
 
    "name": "name 2" 
 
    }] 
 
}]; 
 
var arrayLength = myStringArray[0].people.length; 
 

 
for (var i = 0; i < arrayLength; i++) { 
 
    console.log(myStringArray[0].people[i].id); 
 
}


虽然可以使用Array#forEach方法。从对象

var myStringArray = [{ 
 
    "people": [{ 
 
    "id": "123", 
 
    "name": "name 1" 
 
    }, { 
 
    "id": "456", 
 
    "name": "name 2" 
 
    }] 
 
}]; 
 

 
myStringArray[0].people.forEach(function(v) { 
 
    console.log(v.id); 
 
});

访问ID存储在myStringArray [0]。

下面是修改代码: -

var myStringArray = [ 
    { 
     "people":[ 
      {"id":"123","name":"name 1"}, 
      {"id":"456","name":"name 2"} 
     ] 
    } 
]; 

var array = myStringArray[0].people, 
    arrayLength = array.length; 
for (var i = 0; i < arrayLength; i++) { 

    console.log(array[i].id); 

} 

,因为你只有数组山楂1项和它的人民。 和人没有id属性。人民包含两个项目,每个人都有自己的ID。

for (var i = 0; i < arrayLength; i++) { 
    for(var j = 0; j < myStringArray[i].length; j++) 
    { 
    console.log(myStringArray[i][j].id); 
    } 
}