📅  最后修改于: 2023-12-03 14:51:23.327000             🧑  作者: Mango
在Javascript中,对数组进行排序是非常常见的操作之一,但有时候我们不希望改变原始数组的顺序。这时候我们需要使用一些技巧来创建一个新的已排序的数组,而不影响原始数组。
我们可以使用Array.slice()
方法来创建一个原始数组的副本,然后对副本进行排序,这样就不会影响原始数组。
const myArray = [3, 1, 4, 2, 5];
const sortedArray = myArray.slice().sort();
console.log(myArray); // [3, 1, 4, 2, 5]
console.log(sortedArray); // [1, 2, 3, 4, 5]
这里我们使用slice()
方法创建了原始数组的一个副本,然后对副本进行sort()
操作,得到了一个新的已排序的数组sortedArray
。原始数组myArray
保持不变。
我们也可以使用ES6中的扩展运算符...
来快速创建原始数组的一个副本,并对副本进行排序。
const myArray = [3, 1, 4, 2, 5];
const sortedArray = [...myArray].sort();
console.log(myArray); // [3, 1, 4, 2, 5]
console.log(sortedArray); // [1, 2, 3, 4, 5]
这种方法与使用Array.slice()
的效果一样,都是创建原始数组的副本,并对副本进行排序,而不影响原始数组本身。
无论是使用Array.slice()
还是使用扩展运算符,我们都可以在不改变原始数组本身的情况下对数组进行排序。这样做非常重要,因为它可以避免在代码中引入一些不必要的副作用,并使我们的代码更加健壮。