JavaScript数组(Array)方法 - toReversed、toSorted、toSpliced

在这里插入图片描述

最近发现几个数组方法,是一些常规方法的升级版,比较有意思,分享给大家

文章目录

  • 一、温故
  • 二、知新
      • `toReversed`
      • `toSorted`
      • `toSpliced`

一、温故

  • 我们先来回顾几个比较常用的方法:reversesortsplice
  • 众所周知,reverse:翻转数组,sort:数组排序,splice:删除指定位置的元素并可选的替换成新元素。
  • 他们都有一个共同的特点就是都会改变原数组。
const reverseArr = ["a", "b", "c"];
console.log( reverseArr.reverse() );// 返回值:['c', 'b', 'a']
console.log( reverseArr );          // 原数组:['c', 'b', 'a']const sortArr = [5, 3, 6, 2, 7];
console.log( sortArr.sort() );      // 返回值:[2, 3, 5, 6, 7]
console.log( sortArr );             // 原数组:[2, 3, 5, 6, 7]const spliceArr = [1, 2, 3, 4, 5];
console.log( spliceArr.splice( 2, 2, "a", "b" ) );  // 返回值:[3, 4]
console.log( spliceArr );           // 原数组:[1, 2, 'a', 'b', 5]
  • 如果你在对数组进行翻转、排序、删除并替换新元素时,不准备修改原数组。那么只能提前将数组拷贝一份,还需要注意深浅拷贝带来的影响。
const reverseArr = ["a", "b", "c"];
console.log( [...reverseArr].reverse() );// 返回值:['c', 'b', 'a']
console.log( reverseArr );               // 原数组:['a', 'b', 'c']
  • 此处借助了展开运算符拷贝数组。

二、知新

  • 今天要介绍的这几个新方法,就完美的解决了上面的问题。

toReversed

  • reverse方法的升级版,返回值为翻转后的新数组,不改变原数组
const reverseArr = ["a", "b", "c"];
console.log( reverseArr.toReversed() ); // 返回值:['c', 'b', 'a']
console.log( reverseArr );              // 原数组:['a', 'b', 'c']

toSorted

  • sort方法的升级版,返回值为排序之后的新数组,不改变原数组
const sortArr = [5, 3, 6, 2, 7];
console.log( sortArr.toSorted() );  // 返回值:[2, 3, 5, 6, 7]
console.log( sortArr );             // 原数组:[5, 3, 6, 2, 7]

toSpliced

  • splice的升级版,返回值为删除并替换后的新数组,不改变原数组
    • 因为返回了操作后的新数组,所以无法获取被删除的元素
const spliceArr = [1, 2, 3, 4, 5];
console.log( spliceArr.toSpliced( 2, 2, "a", "b" ) );  // 返回值:[1, 2, 'a', 'b', 5]
console.log( spliceArr );           // 原数组:[1, 2, 3, 4, 5]
  • 这三个方法,除了 返回值 和 对原数组的影响 外,其 参数 和 功能 并无差异。
  • 这对于我们需要修改数组并保留原数组的需求来说非常方便:既能减少代码量,还可以节省变量的创建,使我们的代码更加简洁,逻辑更加直观。
    在这里插入图片描述

如果你对数组的其他常规方法了解的不多,也可以先阅读这篇文章【数组方法大全】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3030398.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【HMGD】GD32/STM32 DMA接收不定长串口数据

单片机型号:GD32F303系列 CubeMX配置 配置串口参数 开启DMA 开启中断 示例代码 使用到的变量 uint8_t RX_Buff_FLAG 0; uint8_t RX_Buff[300] {0}; uint8_t TX_Buff[300] {0};串口接收空闲函数 // 串口接收空闲函数 void HAL_UARTEx_RxEventCallback(UART_H…

深入理解Java HashSet类及其实现原理

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

伦敦金交易常识 原来可以这样分类

如果投资者想做好伦敦金交易,对市场中的伦敦金交易常识等等都需要加以学习和研究,别小看那些伦敦金交易常识,很多高深的交易策略也是从常识出发慢慢建立起来的。伦敦金交易常识可以分为几类,下面我们就来讨论一下。 伦敦金市场的基…

OpenNJet,够轻更强云原生应用引擎

前言: 在正式介绍OpenNJet之前,我们先来看看它的技术架构,如下图所示,OpenNJet正是NGINX的Pro版,在100%兼容NGINX基础上,新增了动态配置加载、主动式健康检测、集群高可用、声明式API等多种强大功能。 NGIN…

FLEX组件可视化设计器CSS3代码生成器

Flex布局可以简便、完整、响应式地实现各种页面布局,所以本软件研发出来FLEX组件。Flex组件是本软件布局的核心,只有掌握好flex组件布局,你才能打造出优秀的个性化页面。 设计完成后整个布局及CSS样式代码都会生成。 排列方向flex-direction…

GPT+Python近红外光谱数据分析

原文链接:GPTPython近红外光谱数据分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247603913&idx1&sn6eb8fd6f1abcdd8160815997a13eb03d&chksmfa82172ecdf59e389a860547a238bb86c7f38ae3baa14e97c7490a52ef2a2c206f88d503a5eb&token…

《星河战队4:星际觉醒》(上)AI科幻电影欣赏

《星河战队4:星际觉醒》(上)AI科幻电影欣赏 征服与荣耀,贪婪与救赎,浩瀚宇宙,人类终将灭绝? 《星河战队4:星际觉醒》(上)在未来世界,随着星际探索…

使用LangChain和Neo4j快速创建RAG应用

大家好,Neo4j 通过集成原生的向量搜索功能,增强了其对检索增强生成(RAG)应用的支持,这标志着一个重要的里程碑。这项新功能通过向量索引搜索处理非结构化文本,增强了 Neo4j 在存储和分析结构化数据方面的现…

Zabbix监控中文乱码问题解决方法

一、问题描述 1.查看Zabbix仪表盘 在Zabbix的监控仪表盘界面,字体显示为“方框”,无法查看到具体的性能指标名称。 2.问题分析 Zabbix的web端没有中文字库,导致切换到中文页面,中文成了乱码这个问题,我们最需要把中文…

Vue2 组件通信方式

props/emit props 作用&#xff1a;父组件通过 props 向子组件传递数据parent.vue <template><div><Son :msg"msg" :pfn"pFn"></Son></div> </template><script> import Son from ./son export default {name: …

RAG 场景对Milvus Cloud向量数据库的需求

虽然向量数据库成为了检索的重要方式,但随着 RAG 应用的深入以及人们对高质量回答的需求,检索引擎依旧面临着诸多挑战。这里以一个最基础的 RAG 构建流程为例:检索器的组成包括了语料的预处理如切分、数据清洗、embedding 入库等,然后是索引的构建和管理,最后是通过 vecto…

【计算机毕业设计】springboot河北任丘非物质文化遗产数字化传承

当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c; 计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法&#xff0c;但这种管理方法存在着许…

第二章 项目定义

七大项目定义基本问题&#xff1a; 为什么要做这些&#xff1f;&#xff08;意图&#xff09;当前项目要支持什么组织目标&#xff1f;&#xff08;目标和宗旨&#xff09;当前项目如何与其他正在进行的项目保持协调一致&#xff1f;&#xff08;项目范围、项目背景、项目依赖…

TCP超时重传机制

一、TCP超时重传机制简介 TCP超时重传机制是指当发送端发送数据后&#xff0c;如果在一定时间内未收到接收端的确认应答&#xff0c;则会认为数据丢失或损坏&#xff0c;从而触发重传机制。发送端会重新发送数据&#xff0c;并等待确认应答。如果在多次重传后仍未收到确认应答&…

三级综合医院微信预约挂号系统源码,PC后台管理端+微信公众号+支付宝小程序全套源码

智慧医院预约挂号系统&#xff0c;微信医疗预约挂号小程序源码&#xff0c;实体医院预约挂号支付系统源码 本系统主要面向中大型的医疗机构&#xff0c;适用于各级公立和民营医院&#xff0c;可对接院内his、lis、pacs系统。 PC后台管理端微信公众号支付宝小程序 系统支持当日…

智慧互联,统信UOS V20桌面专业版(1070)解锁办公新模式丨年度更新

从小屏到大屏 突破&#xff0c;就在方寸之间 从人机到智脑 融合&#xff0c;旨在新质生产力 统信UOS一直致力于将先进科技与用户场景相结合&#xff0c;不断提升用户的工作效率和生产力。在最新发布的统信UOS V20桌面专业版&#xff08;1070&#xff09;版本中&#xff0c;我们…

【stm32-5】输入捕获模式测频率PWMI模式测频率占空比

1.输入捕获模式测频率 &#xff08;1&#xff09;main.c #include "Device/Include/stm32f10x.h" // Device header #include "pwm.h" #include "delay.h" #include "OLED.h" #include "IC.h" uint8_t i; int main(void…

HTML【安装HBuilder、常用标签】--学习JavaEE的day44

day44 JavaEE 学习过程&#xff1a;前端—>数据库—>服务器端 前端的VUE在框架阶段学习 JavaEE学习过程图 HTML 前端&#xff1a;展示页面、与用户交互 — HTML 后端&#xff1a;数据的交互和传递 — JavaEE/JavaWeb 1. 前端开发的工作模式 开发输出htmlcssjs 理解&am…

mac安装禅道

前提已安装&#xff1a;phpapacheMySQL mac安装 php7.1/apache-CSDN博客 安装MySQL 一、禅道下载 安装官方文档 源码包下载地址&#xff1a;禅道下载 - 禅道开源项目管理软件 。 1. 解压禅道源码包 2. 将解压后的文件复制到Apache访问目录下 &#xff08;默认路径为 /Libra…

等保2.0|定级、备案、整改、测评流程

从个人数据泄露&#xff0c;到企业遭到黑客攻击&#xff0c;网络安全风险已经越发严重。随着互联网的不断发展&#xff0c;数字化经济的普及&#xff0c;信息安全等级保护既是行业标准&#xff0c;又是国家要求。如果企业不做等保&#xff0c;轻则罚款、重则停业。 我国等级保…