Nun eigentlich können Sie Slice-Methode wie @Pranav C Balan vorgeschlagen, aber das wird fehlschlagen, wenn das Array multidimensional ist. Sie benötigen etwas wie Array.prototype.clone()
, um die Funktionalität zu sichern. Machen wir das.
Array.prototype.clone = function(){
return this.map(e => Array.isArray(e) ? e.clone() : e);
};
var alph = [ 1, 2, 3, 4, [ 1, 2, [ 1, 2, 3 ], 4 ], 5 ],
cloned = [],
sliced = [];
for(var i = 0; i < 5; i += 1) {
cloned.push(alph.clone());
sliced.push(alph.slice());
}
cloned[0][4][2].reverse(); // only the array at index pos 0,4,2 gets reversed
sliced[0][4][2].reverse(); // all sub arrays at index 4,2 get reversed
console.log(JSON.stringify(cloned));
console.log(JSON.stringify(sliced));
Der Effekt wird auf 'reverse' nicht lokalisiert. Sie könnten 'r [0] [3] =" d "' machen und es würde gleichermaßen "alle Arrays" gleichzeitig ändern. Es ist eigentlich nur ein Array. – 4castle
Objekte sind Referenztypen in JS. Sie müssen die Arrays klonen. – Redu