Wie wir in Javascript Arrays und Objekte wissen auf Referenz, aber wie können wir das Array kopieren, ohne das ursprüngliche Array später zu ändern?
Hier sind einige Möglichkeiten, dies zu tun:
Stellen Sie sich vor, wir haben dieses Array in Ihrem Code:
var arr = [1, 2, 3, 4, 5];
1) Durchlaufen Sie das Array in einer Funktion und geben Sie ein neues Array wie folgt zurück:
function newArr(arr) {
var i=0, res = [];
while(i<arr.length){
res.push(arr[i]);
i++;
}
return res;
}
2) Mit der Slice-Methode wird Slice zum Schneiden eines Teils des Arrays verwendet. Es schneidet einen Teil Ihres Arrays, ohne das Original zu berühren. Wenn Sie im Slice nicht den Anfang und das Ende des Arrays angeben, wird das Ganze geschnitten Array und erstellen Sie im Grunde eine vollständige Kopie des Arrays, so dass wir leicht sagen können:
var arr2 = arr.slice(); // make a copy of the original array
3) Auch die Kontaktmethode dient zum Zusammenführen von zwei Arrays. Wir können jedoch nur eines der Arrays angeben und dann im Grunde genommen eine Kopie der Werte im neuen kontaktierten Array erstellen:
var arr2 = arr.concat();
4) Auch die Stringify- und Parse-Methode wird nicht empfohlen, kann aber eine einfache Möglichkeit sein, Array und Objekte zu kopieren:
var arr2 = JSON.parse(JSON.stringify(arr));
5) Die Methode Array.from wird nicht allgemein unterstützt. Überprüfen Sie vor der Verwendung die Unterstützung in verschiedenen Browsern:
const arr2 = Array.from(arr);
6) ECMA6-Weg, auch nicht vollständig unterstützt, aber babelJs können Ihnen helfen, wenn Sie transpilieren möchten:
const arr2 = [...arr];
slice
undsplice
Operationen sowie einen neuen Spread-Operator undArray.from
eine viel langsamere Implementierung. Schauen Sie sich perfjs.fnfo