学不动了,刚刚,JS又一口气增加了四个数组方法 🔥

485 阅读3分钟

前言


就在今日 凌晨2点TC39组织 通过了一份 数组提案 进入stage3,意味着该提案投入 正式生产环境 已经是板上钉钉的事了。

这个主题叫 Change Array by copy的提案,一口气甩出了4个数组方法,并且每个都有实际的开发用途。

本文绝对 全网首发,认真读完本文,又可以卷死一批前端同学👍。

导读


toReversed() 数组反转

toSorted() 数组排序

toSpliced()数组增删改

with() 数组赋值

四个数组方法


1.toReversed()

实际开发中,我们经常会遇到这种 数据处理 的需求。

我们需要拿到一份数组反转后的数据,但对数组进行了 reverse 处理后,原数组却发生了 改变

let arr = [1,2,3];
arr.reverse() // [3,2,1];
arr // [3,2,1]

很显然,对于数组这样的复杂数据结构,我们需要对其进行一份拷贝

这无疑不利于我们的开发效率。

toReversed() 会帮我们拷贝一份原数组,再进行 reverse 操作。

最终我们得到 翻转 后的数组,同时 不会 对原数组进行改变。

let arr1 = [1,2,3];
arr1.toReversed() //[3,2,1];
arr1 // [1,2,3]

实际开发用途很大,是一个不错的提案。

2. toSorted(function)

sortreverse 同理,排序的过程中,也会对我们的原数组进行更改

toSorted 方法会 拷贝 一份数组进行排序,返回给我们期望的排序数组,并且不会给原数组进行 改变

let arr = [3,1,2];
arr.toSorted() // [1,2,3];
arr // [3,1,2]
3. toSpliced()

toSpliced() 相对于 splice() 方来说,改动较大。

过去 splice() 方法的返回值是仅含 被删除 元素的数组。

同时 splice() 方法也对原数组进行改造。

let arr = [1,2,3];
//索引 1 的位置删除 1 个元素
arr.splice(1,1) // [2]
arr // [1,3]

而通常我们期望获得是 改造后的数组数据 ,如上例中的 [1,3] 而非 删掉 的元素 [2],并且希望 原数组 不要因此发生改变。

toSpliced方法 可以帮助我们 浅拷贝 一份原数组,并且返回值为 改造后的数组,并非删掉的元素。

let arr = [1,2,3];
//索引 1 的位置删除 1 个元素
arr.toSpliced(1,1) // [1,3]
arr // [1,2,3]
4.with

过去我们给数组元素进行赋值,通常采用 array[index] = xx 的方式

let arr = [1,99,3];
arr[1] = 2;
arr // [1,2,3]

如今 Javascript 支持通过 with() 方法来进行赋值,并且 with() 方法也秉持 Change Array by copy 的思想,不会 对原数组进行修改。

with(index,value) 方法支持两个参数,index 表示要赋值的数组索引,value 则为期望赋与的数值;

let arr = [1,10086,3];
arr.with(1,2);
arr // [1,2,3]

同时 with() 方法支持 小数类型 的索引信息,小数值 向下取整 地进行赋值。

let arr = [1,99,3];
arr.with(1.555,2);
arr // [1,2,3]

with()方法 会让一些跨语言爱好者更加友好地接受 Javascript,同时让 Javascript 语法更加规范和健壮。

这四个新增方法支持类型:

  • Array
  • Typed Array

如果对你有帮助的话,希望各位朋友 点赞 关注 收藏,你的鼓励就是我们继续推广Javascrpit 语言新特性的动力。

往期精选:

面试前必读的心经,看完少走很多弯路!

ES 2022 即将新增这6个特性,最后一个绝了

JS即将发布数组的4个新特性,学会了拿去吹牛


编辑:王明

审查:李智杰