Seperti yang kita ketahui dalam array dan objek Javascript adalah dengan referensi, tetapi cara apa yang bisa kita lakukan menyalin array tanpa mengubah array asli nanti?
Berikut ini beberapa cara untuk melakukannya:
Bayangkan kita memiliki larik ini dalam kode Anda:
var arr = [1, 2, 3, 4, 5];
1) Looping melalui array dalam suatu fungsi dan mengembalikan array baru, seperti ini:
function newArr(arr) {
var i=0, res = [];
while(i<arr.length){
res.push(arr[i]);
i++;
}
return res;
}
2) Menggunakan metode slice, slice adalah untuk mengiris bagian dari array, itu akan mengiris beberapa bagian dari array Anda tanpa menyentuh aslinya, dalam slice, jika tidak menentukan awal dan akhir array, itu akan mengiris keseluruhan array dan pada dasarnya membuat salinan penuh array, sehingga kita dapat dengan mudah mengatakan:
var arr2 = arr.slice(); // make a copy of the original array
3) Juga metode kontak, ini untuk menggabungkan dua array, tetapi kita bisa menentukan satu array dan kemudian ini pada dasarnya membuat salinan nilai-nilai dalam array yang dihubungi baru:
var arr2 = arr.concat();
4) Juga metode string dan parse, itu tidak disarankan, tetapi bisa menjadi cara mudah untuk menyalin Array dan Objek:
var arr2 = JSON.parse(JSON.stringify(arr));
5) metode Array.from, ini tidak didukung secara luas, sebelum digunakan periksa dukungan di browser yang berbeda:
const arr2 = Array.from(arr);
6) Cara ECMA6, juga tidak sepenuhnya didukung, tetapi babelJs dapat membantu Anda jika Anda ingin melakukan transile:
const arr2 = [...arr];
slice
dansplice
operasi dan operator penyebaran baru danArray.from
memiliki implementasi yang jauh lebih lambat. Lihatlah perfjs.fnfo