过去,JS数组(Array)的方法都是对原数组内容做更改的,其中包过 splice()
, sort()
和 reverse()
比如:
const arr = [5, 6, 2, 7];
arr.sort();
console.log(arr); // [2, 5, 6, 7]
这对一些纯函数编程环境有点不友好,比方说React
。
现在ES2023
加入了几个通过复制来更改数组的方法,分别是:
-
toSorted(comporeFn)
: 返回一个新的已排序数组 -
toReversed()
:返回一个新的逆序数组 -
toSplice(start, count, ...items)
:在给定的索引处删除和/或替换了一些元素,返回一个新的数组 -
with(index, value)
:在指定索引处替换上新的值,返回一个新的数组
上面这4个新的方法都是不会对原数组做更改的,而是先进行复制在给予操作再返回已复制的新数组。
const arr = [5, 6, 2, 7];
const sortedArr = arr.toSorted();
console.log(arr); // [5, 6, 2, 7]
console.log(sortedArr); // [2, 5, 6, 7]
这推广函数式编程(Functional Programing)原则并增强代码可预测性。
Top comments (0)