2017-09-26 105 views
-1

的設置值我想定義數組內的對象內部的for循環:數組內的對象在for循環

var test = [{}]; 

for(j = 0; j < 10; j++){ test[j]['name'] = "Jonh Lennon"; }; 

console.log(test[0]['name']); 

當我嘗試這樣做,我得到的錯誤「不能設置未定義的屬性「名稱」。

+1

而你如何聲明測試?,你能顯示你的代碼嗎? (angular component code) – Kalamarico

+1

請在Angularjs組件/ directive/contoller中顯示更多代碼,現在您所展示的只是Javascript代碼,如果代碼在vanillaJS中有效,它將在AngularJs中工作,因爲AngularJs仍然Javascript框架。你的問題在別的地方,沒有代碼就不可能調試。 – pegla

+0

我可以看到的一件事是,您使用let,並且不會創建函數作用域變量,它會創建一個塊作用域變量,如果您在{...}中的任何位置聲明它,那麼它只存在於這些括號中 - 塊範圍,你可能有問題,嘗試只是切換讓var,可以立即解決你的問題。 – pegla

回答

0

僅測試[0]被定義爲一個對象中的代碼文字。所以當你的循環遞增過0時,test [j](其中j在1和9之間)將返回undefined。

下面是一個快速修復方法,它將返回一個包含{'name':'Jonh Lennon'}的鍵值對的對象文字數組。

var test = [{}]; 

for(j = 0; j < 10; j++){ 
test[j] = {}; 
test[j]['name'] = "Jonh Lennon"; 
}; 

console.log(test); // Log all john lennons 
0

var test = []; 
 
for(j = 0; j < 10; j++){ 
 
    test[j] = []; 
 
    test[j]['name'] = "Jonh Lennon"; 
 
}; 
 

 
console.log(test[0]['name']);