Es funktioniert nicht, weil alles, was Sie tun, um den Wert des Arguments ist die Aktualisierung Sie (item
) gegeben wurden, die nicht eine Live-Verbindung zum Array hat. Diese Änderung verschwindet, sobald der Rückruf zurückkehrt.
Die am besten geeignete Weg, dies zu tun, ist map
zu verwenden:
var arr = [{num: 1}, {num: 2}];
arr = arr.map(function(item) {
return {somethingElse: 1};
});
console.log(arr);
map
gibt Ihre Funktion jedes Element und baut eine neue Array aus, was auch immer Sie zurückkommen.
Wenn es wichtig ist, dass Sie das Array an Ort und Stelle zu aktualisieren, statt einen neuen zu bauen, Sie können verwenden forEach
, man muss nur auf das Array-Element zuweisen zurück Sie aktualisieren. Das zweite Argument für forEach
‚s Rückruf ist der Index die Sie gerade besuchen, so:
var arr = [{num: 1}, {num: 2}];
arr.forEach(function(item, index) {
arr[index] = {somethingElse: 1};
});
console.log(arr);
Natürlich oben in beiden Fällen würden Sie tatsächlich item
für etwas verwenden, die Sie aren‘ t in Ihrem Beispielcode ... Wenn Sie Eigenschaften auf item
hinzufügen/entfernen möchten, ersetzen Sie das Objekt nicht vollständig, Cyril's answer zeigt Ihnen, wie Sie das tun.
Ich glaube, du meinst Karte? 'arr.map (Funktion (Element) {return {somethingElse: 1}});' – Ziki