假设我想要一个排序函数,它返回输入数组的排序副本。我天真地试过这个
function sort(arr) {
return arr.sort();
}我用这个来测试它,这表明我的sort方法正在改变数组。
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"我也尝试过这种方法。
function sort(arr) {
return Array.prototype.sort(arr);
}但它根本不起作用。
有没有一种简单的方法来解决这个问题,最好是一种不需要手摇我自己的排序算法或将数组的每个元素复制到一个新的元素中的方法?
发布于 2020-01-21 18:26:20
任何想要进行深度复制的人(例如,如果您的数组包含对象)可以使用:
let arrCopy = JSON.parse(JSON.stringify(arr))然后,您可以在不更改arr的情况下对arrCopy进行排序。
arrCopy.sort((obj1, obj2) => obj1.id > obj2.id)请注意:对于非常大的数组,这可能会很慢。
https://stackoverflow.com/questions/9592740
复制相似问题