了解ES14中的5个改变JavaScript开发的特性

目录
文章目录隐藏
  1. 1. toSorted()
  2. 2. toReversed()
  3. 3. toSpliced()
  4. 4. 从末尾开始查找数组
  5. 5. 数组的with()方法
  6. 结语

JavaScript 在过去的 10 年里有了巨大的进步,每年都有新的功能升级出现。现在,让我们一起探索一下 ES14(2023 年)带来的五个最重要的特性,看看有没有错过其中的一些。

1. toSorted()

ES14 的toSorted()方法使得排序数组并返回一个副本而不改变原数组变得更加容易。

以前我们这样做:

const numbers = [3, 1, 4, 1, 5];
const sorted = [...numbers].sort((a, b) => a - b);
console.log(sorted); // [1, 1, 3, 4, 5]
console.log(numbers); // [3, 1, 4, 1, 5]

现在我们有了toSorted()可以这样做:

const numbers = [3, 1, 4, 1, 5];
const sorted = numbers.toSorted((a, b) => a - b);
console.log(sorted); // [1, 1, 3, 4, 5]
console.log(numbers); // [3, 1, 4, 1, 5]

toSorted()接受一个回调函数来控制排序行为 – 升序或降序,按字母顺序或数字顺序。就像sort()一样。

2. toReversed()

toReversed() 一个新的数组方法,用于促进不可变性和函数式编程。

以前使用reverse()

const numbers = [1, 2, 3, 4, 5];
const reversed = numbers.reverse();
console.log(reversed); // [5, 4, 3, 2, 1]
console.log(numbers); // [5, 4, 3, 2, 1]

现在我们有了toReversed()可以这样用:

const numbers = [1, 2, 3, 4, 5];
const reversed = numbers.toReversed();
console.log(reversed); // [5, 4, 3, 2, 1]
console.log(numbers); // [1, 2, 3, 4, 5]

我发现这些不可变方法非常棒,可以不断地链式调用方法,而不用担心原始变量:

const result = numbers.toReversed().toSorted((a, b) => a - b);

3. toSpliced()

对于函数式编程爱好者无疑会对所有这些新的数组方法感到开心。

这是splice()的不可变版本:

const items = [1, 2, 3, 4, 5];
const newItems = items.toSpliced(2, 1, 6, 7);
console.log(newItems); // [1, 2, 6, 7, 4, 5]
console.log(items); // [1, 2, 3, 4, 5]

4. 从末尾开始查找数组

从第一项开始搜索并不总是理想的:

第一项开始搜索

你可以很容易地看到,对我们的巨大列表从末尾而不是开始搜索会快得多。

从末尾开始查找数组

有时你必须从末尾搜索才能让你的程序工作。

比如我们想在一个数字列表中找到最后一个偶数,findfindIndex会非常不准确。

调用reverse()也不行,即使它会很慢:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const lastEven = numbers.reverse().find(n => n % 2 === 0);
console.log(lastEven); // 10(不正确)

所以在这种情况下,findLast()findLastIndex()方法就派上用场了。

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const lastEven = numbers.findLast(n => n % 2 === 0);
console.log(lastEven); // 10(正确)

这段代码更短、更易读。最重要的是,它产生了正确的结果。

5. 数组的with()方法

with()是我们快速更改数组元素而不进行任何突变的方法。

以前的常规方式:

const arr = [1, 2, 3, 4, 5];
const newArr = [...arr];
newArr[2] = 6;
console.log(newArr); // [1, 2, 6, 4, 5]
console.log(arr); // [1, 2, 3, 4, 5]

ES14 现在让我们这样做:

const arr = [1, 2, 3, 4, 5];
const newArr = arr.with(2, 6);
console.log(newArr); // [1, 2, 6, 4, 5]
console.log(arr); // [1, 2, 3, 4, 5]

结语

以上就是关于 ES14 中的 5 个改变 JavaScript 开发的特性,当然远不止于这些,还有其他特性,但 ES14 主要是关于更容易的函数式编程和内置的不可变性。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 了解ES14中的5个改变JavaScript开发的特性

发表回复