Anggap saja saya menginginkan fungsi sortir yang mengembalikan salinan array input yang diurutkan. Dengan naif saya mencoba ini
function sort(arr) {
return arr.sort();
}
dan saya mengujinya dengan ini, yang menunjukkan bahwa sortmetode saya memutasikan array.
var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a); //alerts "1,2,3,3,3,4,5,7,7"
Saya juga mencoba pendekatan ini
function sort(arr) {
return Array.prototype.sort(arr);
}
tetapi tidak berhasil sama sekali.
Apakah ada cara langsung di sekitar ini, lebih baik cara yang tidak memerlukan pengguliran tangan algoritma pengurutan saya sendiri atau menyalin setiap elemen dari array ke yang baru?
.sortmembutuhkan thisnilai untuk menjadi array, jadi agar potongan terakhir berfungsi, Anda akan melakukannya .sort.call(arr)(meskipun itu tidak menyelesaikan masalah Anda).