ES 最新特性 (2023)

ES 最新特性 (2023)

es6 数组中新增的几个不破坏原数组新特性,解决了在工作中使用 sort、splice 心智负担。爽歪歪


新特性兼容参考【mdn 文档】

ecma 官方文档

Array 新特性

toSorted

toSorted(compareFn) 方法对数组的元素进行排序,并返回排序完成的新数组。默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。(相对于 sort()来说,属于非破坏性版本)

  • compareFn:定义排序顺序的函数
const values = [1, 10, 21, 2];
const sortedValues = values.toSorted((a, b) => a - b);

console.log(sortedValues === values); //引用对比是false
console.log(sortedValues); // [1, 2, 10, 21]

toSpliced

toSpliced(start, deleteCount, …items) 方法可以同时完成多个操作:在数组中给定的索引开始移除指定数量的元素,然后在相同的索引处插入给定的元素。它返回一个操作完的新数组。(相对于 splice()来说,属于非破坏性版本)

  • start:从 0 开始计算的索引,表示要开始改变数组的位置
  • deleteCount: 指示数组中要从 start 删除的元素数量
  • …items: 要添加的 N 个元素
const months = ["Jan", "Mar", "Apr", "May"];

// 在索引 1 处添加一个元素
const months2 = months.toSpliced(1, 0, "Feb");
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]

// 从第 2 个索引开始删除两个元素
const months3 = months2.toSpliced(2, 2);
console.log(months3); // ["Jan", "Feb", "May"]

// 在索引 1 处用两个新元素替换一个元素
const months4 = months3.toSpliced(1, 1, "Feb", "Mar");
console.log(months4); // ["Jan", "Feb", "Mar", "May"]

// 原数组不会被修改
console.log(months); // ["Jan", "Mar", "Apr", "May"]

toReversed

toReversed() 方法将调用该方法的数组对象的元素以相反的顺序调换,并返回一个新数组。 (相对于 reverse()来说,属于非破坏性版本)

const data = [1, 2, 3, 4, 5];
const reversedData = data.toReversed();

console.log(reversedData === data); //引用对比是false
console.log(reversedData); // [5, 4, 3, 2, 1]

with

with(index, value) 通过返回一个指定索引处的值被新值替换的新数组,来改变数组中指定索引处的值。原数组不会被修改,这使得你可以以链式调用数组方法的方式来对数组进行操作。(非破坏性版本)

  • index 要修改的数组索引
  • 要分配给指定索引的任何值
const arr = [1, 2, 3, 4, 5];
const withArr = arr.with(2, 6);

console.log(withArr === arr); //引用对比是false
console.log(withArr); // [1, 2, 6, 4, 5]

新迭代方法

Array 支持从尾到头搜索 findLast() findLastIndex()

  • findLast 会返回第一个查找到的元素,如果没有找到,就会返回 undefined

  • findLastIndex 会返回第一个查找到的元素的索引。如果没有找到,就会返回 -1

Hashbang 语法

Hashbang 语法:Unix 的命令行脚本都支持#!命令,又称为 Hashbang。这个命令放在脚本的第一行,用来指定脚本的执行器。Hashbang 就是想为 Java 脚本引入了#!命令,这个命令写在脚本文件或者模块文件的第一行:语法规则是在脚本文件头部增加一行代码: #!/usr/bin/env node

WeakMap 新特性

WeakMap 支持 SymbolA 作为 Keys

有疑问的同学可以私信我、对帮助到同学欢迎大家点赞、收藏评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值