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 loop
2.4x daha yavaştır.
diğer tarayıcılar while loop
için en hızlı yöntemdir, çünkü bu tarayıcıların slice
ve 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