a.map(e => e)
является еще одной альтернативой для этой работы.На сегодняшний день .map()
очень быстро (почти так же быстро, как .slice(0)
) в Firefox, но не в Chrome.
С другой стороны, если массив является многомерным, так как массивы являются объектами иобъекты являются ссылочными типами, ни один из методов slice или concat не излечит ... Итак, один правильный способ клонирования массива - это выдумка Array.prototype.clone()
следующим образом.
Array.prototype.clone = function(){
return this.map(e => Array.isArray(e) ? e.clone() : e);
};
var arr = [ 1, 2, 3, 4, [ 1, 2, [ 1, 2, 3 ], 4 , 5], 6 ],
brr = arr.clone();
brr[4][2][1] = "two";
console.log(JSON.stringify(arr));
console.log(JSON.stringify(brr));