探索 ECMAScript 2023 中的新数组方法
前言
ECMAScript 2023 引入了一些新功能,以改进语言并使其更加强大和无缝。这个新版本带来了令人兴奋的功能和新的 JavaScript 数组方法,使使用 JavaScript 编程更加愉快和轻松。本文将带领读者全面了解数组原型上新 JavaScript 方法。
什么是ECMAScript?
ECMAScript 是一种标准化的脚本语言,它是 JavaScript 的规范。ECMAScript 2023 是 JavaScript 编程语言的更新,旨在带来改进并使 JavaScript 程序可预测和可维护。
ECMAScript 2023 引入的新方法
toReversed()
toReversed() 与 reverse() 类似。 toReversed() 方法以相反的顺序返回数组的元素,而不更改原始数组。(请注意,ECMAScript 2023 代码片段中的新 JavaScript 方法在现代 Web 浏览器上运行。从 MDN 检查浏览器功能。它适用于浏览器,因为方法仍然很新。此外,Node.js 不支持这些方法。Node.js 版本 20+ 支持它们。这不利于开发人员,因为开发人员使用 Node.js LTS 版本(版本 18)。)
eg:让我们看一下按时间顺序排列的一周中几天的列表。结果将以相反的顺序显示。
//This is the original array
const days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
//Using reverse()
const reverseDays=days.reverse();
console.log(reverseDays);
//Output: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
console.log(days);
//Output of original array is changed: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday'
使用该 reverse() 方法修改原始数组。
eg: toReversed() 方法在不更改原始数组的情况下反转数组。看看这个例子:
//Using toReversed() method
const reversedDays=days.toReversed();
console.log(reversedDays);
//Output: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
console.log(days);
//Output of original array is not changed: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
toReversed() 功能是开发人员欣赏的一项显着功能。这是因为原始数组是用该 reverse() 方法变异的。感谢 ECMAScript 2023 引入该 toReversed() 方法。使用此方法,您可以更改数组的副本,而不是原始数组。
toSorted()
toSorted() 类似于 JavaScript 的 sort() 方法。但两种方法彼此不同,是的!你猜对了。与 sort() 不同,toSorted() 方法不会更改原始数组。 toReversed() 方法返回一个新数组,使原始数组保持不变。
eg: 考虑这种情况,我们需要按升序对数字进行排序。此示例将说明 和 toSorted() 之间的区别。
//This is the original array
const numbers=[9, 4, 8, 1, 6, 3];
//Using sort
const sortNumbers=numbers.sort();
console.log(sortNumbers);
// Output:[1, 3, 4, 6, 8, 9]
console.log(numbers)//original array
//Output:[1, 3, 4, 6, 8, 9]
//Using toSorted
const sortNumbers=numbers.toSorted();
console.log(sortNumbers);
// Output:[1, 3, 4, 6, 8, 9]
console.log(numbers)//original array
//Output:[9, 4, 8, 1, 6, 3]
//Original array is not mutated
toSorted() 方法修改上述实例中的复制版本。它返回一个新数组,其中元素按升序排序。但是,原始数组不会更改。另一方面, sort() 方法将原始数组就地改变,如上面的示例所示。
toSpliced()
toSpliced() 数组方法是 ECMAScript 2023 中的一项新功能。类似于 JavaScript 的 splice() 数组方法,但略有不同。两种数组方法的区别在于 toSpliced() 不会修改原来的数组。toSpliced() 创建一个包含已更改元素的新数组,但原始数组保持不变。 toSpliced() 可以在一个数组中执行多项操作。您可以添加、删除和替换数组中的元素。
eg: 让我们考虑一个场景,我们有一个元素列表,并希望在不更改原始数组的情况下删除一些元素。此示例将说明 和 toSpliced 之间的区别 splice() 。
//Original array
const fruits=['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples'];
//Using Splice
const spliceFruits= fruits.splice(2,1);//removing one fruit(Bananas)
console.log(spliceFruits);
//Output: ['Grapes', 'Oranges', 'Mangoes', 'Pineapples']
console.log(fruits);//original array is altered
//Output: ['Grapes', 'Oranges', 'Mangoes', 'Pineapples']
//Using toSpliced
const splicedFruits= fruits.toSpliced(4,1);//removing one fruit(Pineapples)
console.log(splicedFruits);
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes']
console.log(fruits);//original array remain unmodified
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']
// Adding an element at index 1
const fruits2 = fruits.toSpliced(1, 0, "Passion");
console.log(fruits2);
//Output: ['Grapes', 'Passion', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']
// Replacing one element at index 1 with two new elements
const fruits3 = fruits2.toSpliced(1, 1, "Guava", "Melon");
console.log(fruits3);
//Output: ['Grapes', 'Guava', 'Melon', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']
//Original array remain unchanged
console.log(fruits)
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']
toSpliced() 数组方法是 JavaScript 语言的一个重要附加功能。它允许开发人员在不更改原始数组的情况下操作数组。这使开发人员能够轻松管理和维护代码。如上面的示例所示,此方法提供了一种更方便的方法来添加、删除或替换任何数组索引处的元素。
with()
with() 数组方法在引入 ECMAScript 2021 (ES12) 时被添加到 JavaScript 编程语言中。更新数组中的元素在 JavaScript 中很常见。但是,更改数组元素会修改初始数组。with() 数组方法在 ECMAScript 2023 中引入了一项新功能。该 with() 方法提供了一种在不更改原始数组的情况下更新数组中元素的安全方法。
eg: 这是通过返回一个包含更新元素的新数组来实现的。
const flowers=['Lily', 'Daisy', 'Iris', 'Lotus', 'Allium'];
//old way of updating an array;
flowers [4]='Rose';
console.log(flowers);
//Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Rose']
//New way of updating an array using with()
const updatedFlowers=flowers.with(4, 'Aster');
console.log(updatedFlowers);
//Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Aster']
console.log(flowers);//original array
Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Allium']
更新数组的旧方法使用括号表示法来更改数组中的元素。使用括号表示法更新数组,将修改原始数组。但是,该 with() 方法在更新特定数组索引中的元素后会获得相同的结果,但不会改变原始数组。您可以创建数组的副本,该副本将返回一个具有更新索引的新数组。
总结
ECMAScript 不断进步,因为它每年都会推出新版本。这是自2015年以来一直存在的趋势。这种转变每年都在发生,以改进 ECMAScript 和 JavaScript。ECMAScript 2023 为 JavaScript 语言带来了几个令人兴奋的功能。这些功能改进了语言功能和开发人员体验。
使用这些上述数组方法,开发人员可以接受数组数据的不可变性,因为他们可以确保原始数组保持不变。它们将增强开发人员在使用数组时的工作。保持数据不变是有利的,正如 ECMAScript 2023 中的这些数组方法所证明的那样。这些好处适用于任何 JavaScript 对象,而不仅仅是数组。
探索 ECMAScript 2023 中的新数组方法的更多相关文章
- ECMAScript 5中新增的数组方法
ECMAScript 5中定义了9个新的数组方法,用于遍历.映射.过滤.检测.简化和搜索数组. 在开始介绍之前,很有必要对这几个新增的数组方法做一个概述.首先,大多数方法的第一个参数接收一个函数,并且 ...
- iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解
目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...
- ECMAScript5提供了9个新数组方法:遍历、映射、过滤、检测、简化、和搜索数组
大多数方法的第一个参数接收一个函数,并且对数组的每个元素调用一次该函数.如果是稀疏数组,对不存在的元素不调用传递的函数.在大多数情况下,调用提供的函数使用三个参数:数组元素,元素的索引,数组本身,通常 ...
- js中常用的数组方法
在数组的尾部增加或删除某个元素:push() 和 pop() push() : 在数组的尾部追加一个或多个元素,并返回数组的长度 pop():在数组的尾部删除一个元素,并返回被删除项 var arr ...
- JS中对象转数组方法总结
1.Array.from() 方法,用于数组的浅拷贝.就是将一个类数组对象或者可遍历对象转换成一个真正的数组.eg: let obj = { 0: 'nihao', 1: 'haha', 2: 'ga ...
- 使用ES6新数组方法(象C# Lambda表达式一样写查询语句)
let people = [ {id: 1, name: "a", age: 12}, {id: 2, name: "b", age: 13}, {id: 3, ...
- 总结iOS9中的新的方法
iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...
- ECMAScript 2016,2017 和 2018 中所有新功能的示例
很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...
- [转]ECMAScript 2016,2017 和 2018 中所有新功能的示例
很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...
- JavaScript基础进阶之数组方法总结
数组常用方法总结: 下面我只总结了es3中常用的数组方法,一共有11个.es5中新增的9个数组方法,后续再单独总结. 1个连接数组的方法:concat() 2个数组转换为字符串的方法:join(). ...
随机推荐
- DHorse v1.3.2 发布,基于 k8s 的发布平台
版本说明 新增特性 构建版本.部署应用时的线程池可配置化: 优化特性 构建版本跳过单元测试: 解决问题 解决Vue应用详情页面报错的问题: 解决Linux环境下脚本运行失败的问题: 解决下载Maven ...
- 1.12 进程注入ShellCode套接字
在笔者前几篇文章中我们一直在探讨如何利用Metasploit这个渗透工具生成ShellCode以及如何将ShellCode注入到特定进程内,本章我们将自己实现一个正向ShellCodeShell,当进 ...
- Linux虚拟机安装及下载
centos 7操作系统下载及安装步骤 (仅供参考) 下载: 1.打开如下网站:先下载镜像文件 ping:https://www.centos.org/download/ 2.进入到如下界面 3.然后 ...
- Spring Cloud LoadBalancer原理讲解及自定义负载均衡器
Spring Cloud LoadBalancer原理 LoadBalancerClient作为负载均衡客户端,用于进行负载均衡逻辑,从服务列表中选择出一个服务地址进行调用,其内部方法为下图显示: ( ...
- 5. 用Rust手把手编写一个Proxy(代理), 通讯协议建立, 为内网穿透做准备
用Rust手把手编写一个Proxy(代理), 通讯协议建立, 为内网穿透做准备 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github ...
- 微服务使用openfeign调用单点的会话失效问题
项目Springcloud,认证中心方式实现SSO使用开源框架Sa-Token 本身的单独访问每个客户端服务的单点就没有问题.然后单点通过Fegin调用就不好使了! 主要使用的Sa-Token的微服务 ...
- 卷积导向快速傅里叶变换(FFT/NTT)教程
1 Forewords 卷积,但不止卷积 - FFT 漫谈 先有 FT,再有 DFT,才有 FFT 时频转换是最初的用途 发现单位根优秀性质,James Cooley, John Tukey 发明现代 ...
- .NET静态代码织入——肉夹馍(Rougamo)发布2.0
肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...
- Mybatis_plus笔记
Mybatis_plus笔记 在使用mybatis_plus的过程中我们可以明显的感受到他的强大之处.它就像是Mybatis和Jpa的结合体一样,它拥有jpa对单表的各种CRUD操作以及强大的条件构造 ...
- 2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1 <= a <= b <= c <= 10^9 但是具体的延时数字丢失了,只有单次调用的时间 一次调
2023-10-21:用go语言,一共有三个服务A.B.C,网络延时分别为a.b.c 并且一定有:1 <= a <= b <= c <= 10^9 但是具体的延时数字丢失了,只 ...