Giả sử tôi muốn một hàm sắp xếp trả về một bản sao đã sắp xếp của mảng được nhập. Tôi ngây thơ thử cái này
function sort(arr) {
return arr.sort();
}
và tôi đã thử nó với điều này, cho thấy sortphương thức của tôi đang làm biến đổi mảng.
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"
Tôi cũng đã thử phương pháp này
function sort(arr) {
return Array.prototype.sort(arr);
}
nhưng nó không hoạt động.
Có cách nào đơn giản để giải quyết vấn đề này không, tốt nhất là cách không yêu cầu tự tay thực hiện thuật toán sắp xếp của riêng tôi hoặc sao chép mọi phần tử của mảng vào một cái mới?
.sortyêu cầu thisgiá trị là mảng, vì vậy để đoạn mã cuối cùng hoạt động bạn sẽ làm .sort.call(arr)(mặc dù nó không giải quyết được vấn đề của bạn).