下面的代碼:的javascript:意外的行爲推入空數組
var arr1 = [1,2,3];
var obj1 = {};
for (var j = 0; j < arr1.length; j++) {
if (obj1[j.toString()])
obj1[j.toString()] = obj1[j.toString()].push(j)
else
obj1[j.toString()] = [].push(j);
}
產生了以下的輸出:
obj1
=> { '0': 1, '1': 1, '2': 1 }
,我只想好心想知道這是爲什麼。
(現在我知道下面的代碼:
var arr1 = [1,2,3];
var obj1 = {};
for (var j = 0; j < arr1.length; j++) {
if (obj1[j.toString()])
obj1[j.toString()] = obj1[j.toString()].push(j)
else {
obj1[j.toString()] = [];
obj1[j.toString()].push(j);
}
}
會給我我想要的輸出:
obj1
=> { '0': [ 0 ], '1': [ 1 ], '2': [ 2 ] }
)
好吧,'[]'和'Array.prototype'是一樣的,沒有空數組,並且你沒有在'obj'內部推動任何東西。第二個代碼片段是正確的做法,你實際上創建了一個空數組 – adeneo