如何在不改变原始数组的情况下对数组进行排序?

假设我需要一个排序函数,它返回输入数组的排序副本。我天真地尝试了这个

函数排序(arr){
返回arr.sort();
}

我用这个测试了它,这表明我的sort方法正在改变数组

var a=[2,3,7,5,3,7,1,3,4];
排序(a);
警报(a)//警报“1,2,3,3,3,4,5,7”

我也尝试过这种方法

函数排序(arr){
返回Array.prototype.sort(arr);
}

但它根本不起作用

有没有一种简单的方法可以解决这个问题,最好是一种不需要手动滚动我自己的排序算法或将数组中的每个元素复制到一个新元素中的方法

排序前需要复制数组。使用es6制作浅拷贝的一种方法是:

const sorted=[…arr].sort();

排列语法为数组文字(从mdn复制):

var-arr=[1,2,3];
var arr2=[…arr];//像arr.slice()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

发表评论