-1
的設置值我想定義數組內的對象內部的for循環:數組內的對象在for循環
var test = [{}];
for(j = 0; j < 10; j++){ test[j]['name'] = "Jonh Lennon"; };
console.log(test[0]['name']);
當我嘗試這樣做,我得到的錯誤「不能設置未定義的屬性「名稱」。
的設置值我想定義數組內的對象內部的for循環:數組內的對象在for循環
var test = [{}];
for(j = 0; j < 10; j++){ test[j]['name'] = "Jonh Lennon"; };
console.log(test[0]['name']);
當我嘗試這樣做,我得到的錯誤「不能設置未定義的屬性「名稱」。
僅測試[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
var test = [];
for(j = 0; j < 10; j++){
test[j] = [];
test[j]['name'] = "Jonh Lennon";
};
console.log(test[0]['name']);
而你如何聲明測試?,你能顯示你的代碼嗎? (angular component code) – Kalamarico
請在Angularjs組件/ directive/contoller中顯示更多代碼,現在您所展示的只是Javascript代碼,如果代碼在vanillaJS中有效,它將在AngularJs中工作,因爲AngularJs仍然Javascript框架。你的問題在別的地方,沒有代碼就不可能調試。 – pegla
我可以看到的一件事是,您使用let,並且不會創建函數作用域變量,它會創建一個塊作用域變量,如果您在{...}中的任何位置聲明它,那麼它只存在於這些括號中 - 塊範圍,你可能有問題,嘗試只是切換讓var,可以立即解決你的問題。 – pegla