DEV Community

[yun]
[yun]

Posted on • Edited on

[每次突破0.1] ES2023中数组的复制更改方法

过去,JS数组(Array)的方法都是对原数组内容做更改的,其中包过 splice(), sort()reverse()
比如:

const arr = [5, 6, 2, 7];
arr.sort();

console.log(arr); // [2, 5, 6, 7]
Enter fullscreen mode Exit fullscreen mode

这对一些纯函数编程环境有点不友好,比方说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]
Enter fullscreen mode Exit fullscreen mode

这推广函数式编程(Functional Programing)原则并增强代码可预测性。

Top comments (0)