Der folgende Code:javascript: unerwartetes Verhalten in leere Array schieben
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);
}
erzeugt die folgende Ausgabe:
obj1
=> { '0': 1, '1': 1, '2': 1 }
und ich möchte nur freundlich wissen, warum.
(ich bin jetzt bewusst, dass der folgende Code:
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);
}
}
geben mir meine gewünschte Ausgabe:
obj1
=> { '0': [ 0 ], '1': [ 1 ], '2': [ 2 ] }
)
Nun, '[]' ist das gleiche wie 'Array.prototype', es gibt kein leeres Array, und Sie drängen nicht auf irgendwas in' obj'. Das zweite Code-Snippet ist der richtige Weg, es zu tun, wo Sie tatsächlich ein leeres Array erstellen – adeneo