2016-09-21 213 views
1

我有一點麻煩的循環讀取數組: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

回答

3

您需要遍歷內部數組(第一個元素在主數組中的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); 
 
});

0

訪問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); 

} 
0

,因爲你只有數組山楂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); 
    } 
}