Bildiğimiz gibi Javascript dizileri ve nesneleri referans içindir, ancak orijinal diziyi daha sonra değiştirmeden diziyi kopyalamanın ne yollarını yapabiliriz?
İşte bunu yapmanın birkaç yolu:
Kodunuzda bu dizinin bulunduğunu düşünün:
var arr = [1, 2, 3, 4, 5];
1) Bir işlevdeki dizi boyunca döngü yapmak ve şu şekilde yeni bir dizi döndürmek:
function newArr(arr) {
var i=0, res = [];
while(i<arr.length){
res.push(arr[i]);
i++;
}
return res;
}
2) Dilim yöntemini kullanarak, dilim dizinin bir bölümünü dilimlemek içindir, dizinin bir kısmını orijinaline dokunmadan dilimleyecek, dizinin başlangıcını ve bitişini belirtmezseniz, tüm dilimi dilimleyecektir dizi ve temel olarak dizinin tam bir kopyasını yapmak, böylece kolayca söyleyebiliriz:
var arr2 = arr.slice(); // make a copy of the original array
3) Ayrıca iletişim yöntemi, bu iki diziyi birleştirmek içindir, ancak dizilerden birini belirtebiliriz ve bu temel olarak yeni temas edilen dizideki değerlerin bir kopyasını oluşturur:
var arr2 = arr.concat();
4) Ayrıca dizgi ve ayrıştırma yöntemi, önerilmez, ancak Dizi ve Nesneleri kopyalamanın kolay bir yolu olabilir:
var arr2 = JSON.parse(JSON.stringify(arr));
5) Array.from yöntemi, bu yaygın olarak desteklenmez, kullanmadan önce farklı tarayıcılarda desteği kontrol edin:
const arr2 = Array.from(arr);
6) ECMA6 yolu, tam olarak desteklenmemektedir, ancak aktarmak istediğinizde babelJ'ler size yardımcı olabilir:
const arr2 = [...arr];
slice
,splice
operasyonlar ve yeni spread operatörü için harika bir performansaArray.from
sahibiz ve çok daha yavaş bir uygulamaya sahibiz. Perfjs.fnfo