Bir diziyi klonlamanın en az 5 (!) Yolu vardır:
- döngü
- dilim
- Array.from ()
- concat
- forma operatörü (HIZLI)
Aşağıdaki bilgileri sağlayan bir huuuge BENCHMARKS ipliği var :
için göz kırpma tarayıcılar slice(), en hızlı yöntemdir concat()biraz daha yavaş olduğunu ve while loop2.4x daha yavaştır.
diğer tarayıcılar while loopiçin en hızlı yöntemdir, çünkü bu tarayıcıların sliceve için dahili optimizasyonları yoktur concat.
Bu, Temmuz 2016'da da geçerli.
Aşağıda, tarayıcınızın konsoluna kopyalayıp yapıştırabileceğiniz ve resmi görmek için birkaç kez çalıştırabileceğiniz basit komut dosyaları bulunmaktadır. Milisaniye çıktılar, daha düşük daha iyidir.
döngü sırasında
n = 1000*1000;
start = + new Date();
a = Array(n);
b = Array(n);
i = a.length;
while(i--) b[i] = a[i];
console.log(new Date() - start);
dilim
n = 1000*1000;
start = + new Date();
a = Array(n);
b = a.slice();
console.log(new Date() - start);
Lütfen bu yöntemlerin Array nesnesinin kendisini klonlayacağını, ancak dizi içeriğinin referans olarak kopyalandığını ve derin klonlanmadığını unutmayın.
origAr == clonedArr //returns false
origAr[0] == clonedArr[0] //returns true