当前位置: 首页 > news >正文

ECMAScript 2023

  1. 从尾到头搜索数组
    在 JavaScript 中,通过 find() 和 findIndex() 查找数组中的值是一种常见做法。不过,这些方法从数组的开始进行遍历:
    const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];array.find(elem => elem.v > 3); // {v: 4}
    array.findIndex(elem => elem.v > 3); // 3
    findLast() 会返回第一个查找到的元素,如果没有找到,就会返回 undefined;
    findLastIndex() 会返回第一个查找到的元素的索引。如果没有找到,就会返回 -1;
     const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];array.findLast(elem => elem.v > 3); // {v: 5}array.findLastIndex(elem => elem.v > 3); // 4array.findLastIndex(elem => elem.v > 5); // undefined
  2. 通过副本更改数组
    方法有4个
    Array.prototype.toReversed()
    Array.prototype.toSorted()
    Array.prototype.toSpliced()
    Array.prototype.with()

    我们知道,大多数的数组方法都是非破坏性的,也就是不会改变原数组,比如 filter() 方法
    当然,也有一些是破坏性的方法,它们在执行时会改变原数组,比如 sort() 方法
    在数组的方法中,下面的方法是具有破坏性的:
    reverse()
    sort()
    splice()

    如果想要不破坏数组,需要创建一个数组副本,对副本进行修改,因此就引入了这三个方法的非破坏性版本,因此不需要手动创建副本再进行操作了

    reverse() 的非破坏性版本:toReversed()
    sort() 非破坏性版本:toSorted(compareFn)
    splice() 非破坏性版本:toSpliced(start, deleteCount, ...items)

    除此之外,还有了一个新的非破坏性方法:with()。该方法会以非破坏性的方式替换给定 index 处的数组元素,即 arr[index]=value 的非破坏性版本。
     

    类型化数组也是数组,只不过其元素被设置为特定类型的值。类型化数组的核心就是一个名为 ArrayBuffer 的类型。每个 ArrayBuffer 对象表示的只是内存中指定的字节数,但不会指定这些字节用于保存什么类型的数据。通过 ArrayBuffer 能做的就是为了将来使用而分配一定数量的字节。
    这些方法也适用于元组,元组相当于不可变的数组。它们拥有数组的所有方法 —— 除了破坏性的方法
    toReversed() 是 reverse() 方法的非破坏性版本:

    const arr = ['a', 'b', 'c'];
    const result = arr.toReversed();
    console.log(result); // ['c', 'b', 'a']
    console.log(arr);    // ['a', 'b', 'c']

    toSorted() 是 sort() 方法的非破坏性版本:

    const arr = ['c', 'a', 'b'];
    const result = arr.toSorted();
    console.log(result);  // ['a', 'b', 'c']
    console.log(arr);     // ['c', 'a', 'b']

    splice() 方法比其他几种方法都复杂,其使用形式:splice(start, deleteCount, ...items)。该方法会从从 start 索引处开始删除 deleteCount 个元素,然后在 start 索引处开始插入 item 中的元素,最后返回已经删除的元素。
    toSpliced 是 splice() 方法的非破坏性版本,它会返回更新后的数组,原数组不会变化,并且无法再得到已经删除的元素:

    const arr = ['a', 'b', 'c', 'd'];
    const result = arr.toSpliced(1, 2, 'X');
    console.log(result); // ['a', 'X', 'd']
    console.log(arr);    // ['a', 'b', 'c', 'd']

    .with() 方法的使用形式:.with(index, value),它是 arr[index] = value 的非破坏性版本:

    const arr = ['a', 'b', 'c'];
    const result = arr.with(1, 'X');
    console.log(result);  // ['a', 'X', 'c']
    console.log(arr);     // ['a', 'b', 'c']

相关文章:

ECMAScript 2023

从尾到头搜索数组 在 JavaScript 中,通过 find() 和 findIndex() 查找数组中的值是一种常见做法。不过,这些方法从数组的开始进行遍历: const array [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];array.find(elem > elem.v > 3); // {v:…...

爬虫实战之使用 Python 的 Scrapy 库开发网络爬虫详解

关键词 - Python, Scrapy, 网络爬虫 在信息爆炸时代,我们每天都要面对海量的数据和信息。有时候我们需要从互联网上获取特定的数据来进行分析和应用。今天我将向大家介绍如何使用 Python 的 Scrapy 库进行网络爬虫,获取所需数据。 1. Scrapy 简介 1.1 …...

【面试题】UDP和TCP有啥区别?

UDP UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就…...

字节实习后端面试总结(C++/GO)

语言 C ++, Python 哪一个更快? 答:这个我不知道从哪方面说,就是 C + + 的话,它其实能够提供开发者非常多的权限,就是说它能涉及到一些操作系统级别的一些操作,速度应该挺快。然后 Python 实现功能还是蛮快的。 补充: 一般而言,C++更快一些,因为它是一种编译型语…...

linux 自动登录SSH

自动登录SSH 每次ssh连接服务器还要输入密码,可以进行配置自动登录SSH 步骤 在SSH的client端产生一组公钥和私钥 # 算法可以使用RSA和DSA两种ssh-keygen -f 秘钥文件名 -t 使用的算法 会生成私钥文件id_rsa以及公钥文件id_rsa.pub 把公钥上传至SSH Server端的.ssh目…...

量化:pandas基础

文章目录 简介Series构造 DataFrame构造列的查改增删填充默认值 简介 pandas是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构。 pandas主要的两种数据结构为Series和DataFrame,分别用于处理一维和二维数据。 Series Series 是一种类…...

华为云渲染实践

// 编者按:云计算与网络基础设施发展为云端渲染提供了更好的发展机会,华为云随之长期在自研图形渲染引擎、工业领域渲染和AI加速渲染三大方向进行云渲染方面的探索与研究。本次LiveVideoStackCon 2023上海站邀请了来自华为云的陈普,为大家分…...

SpringBoot注解详解:从核心到Web,从数据到测试,一网打尽

总结的了平时学习springboot常用的一些注解,方便以后开发时可以阅览回忆 springboot的常用注解可以分为以下几类: 核心注解:这些注解是springboot的基础,用于启动、配置和管理springboot应用。Web MVC注解:这些注解是…...

Java寻找奇数

1.题目描述 现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。 输入描述: 第一行:一个整数n,表示序列的长度。第二行:n个…...

WinPlan经营大脑:精准预测,科学决策,助力企业赢得未来

近年,随着国内掀起数字化浪潮,“企业数字化转型”成为大势所趋下的必选项。但数据显示,大约79%的中小企业还处于数字化转型初期,在“企业经营管理”上存在着巨大的挑战和风险。 WinPlan经营大脑针对市场现存的企业经营管理难题,提供一站式解决方案,助力企业经营管理转型…...

多数据源切换以及事务处理

SpringBoot 多数据源切换(超级简单)_springboot数据源切换_Tz.的博客-CSDN博客 springboot dynamic多数据源demo以及常见切换、事务问题_一片星空~的博客-CSDN博客...

docker 重装提示 Exising installation is up to date 解决方法

Windows Docker 重装提示 Exising installation is up to date 解决方法 出现这个问题是因为卸载Docker没有卸载干净,导致无法重装 解决方法: 按下WindowR唤起命令输入界面,输入 regedit 打开注册表编辑在地址栏输入HKEY_LOCAL_MACHINE\SOFTW…...

k8s分散部署节点之pod反亲和性(podAntiAffinity)

使用背景和场景 业务中的某个关键服务,配置了多个replica,结果在部署时,发现多个相同的副本同时部署在同一个主机上,结果主机故障时,所有副本同时漂移了,导致服务间断性中断 基于以上背景,实现…...

大A的造血与吸血能力

由于大A持续不赚钱,玩家们就喜欢挑他的毛病,其中之一就是大A的持续吸血能力。网络上也已有人进行了相关统计,这里我想再次梳理。 造血能力 对2022年全部A股的披露数据进行汇总统计。我们重点关注经营性现金流、净利润、持续经营净利润、年度累…...

【数据库】使用ShardingSphere+Mybatis-Plus实现读写分离

书接上回:数据库调优方案中数据库主从复制,如何实现读写分离 ShardingSphere 实现读写分离的方式是通过配置数据源的方式,使得应用程序可以在执行读操作和写操作时分别访问不同的数据库实例。这样可以将读取操作分发到多个从库(从…...

【第三方接口】阿里云内容审核SDK的使用

1. 内容审核服务 内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。 目前很多平台都支持内容检测,如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。 目前用得较多…...

IDEA软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 IntelliJ IDEA是一款流行的Java集成开发环境(IDE),由捷克软件开发公司JetBrains开发。它专为Java开发人员设计,提供了许多高级功能和工具,使得开发人员能够更高效地编写…...

尚硅谷宋红康MySQL笔记 10-13

是记录,我不会记录的特别详细 第10章 创建和管理表 标识符命名规则 数据库名、表名不得超过30个字符,变量名限制为29个只能包含 A–Z, a–z, 0–9, _共63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个MySQL软件中,数据库不能…...

【ag-grid-vue】基本使用

ag-grid是一款功能和性能强大外观漂亮的表格插件,ag-grid几乎能满足你对数据表格所有需求。固定列、拖动列大小和位置、多表头、自定义排序等等各种常用又必不可少功能。关于收费的问题,绝大部分应用用免费的社区版就够了,ag-grid-community社…...

学习JAVA打卡第四十四天

Scanner类 ⑴Scanner对象 scanner对象可以解析字符序列中的单词。 例如:对于string对象NBA 为了解析出NBA的字符序列中的单词,可以如下构造一个scanner对象。 将正则表达式作为分隔标记,即让scanner对象在解析操作时把与正则表达式匹配的字…...

Excel通用表头及单元格合并

要在Java中实现XLS文件中的通用表头合并和单元格合并,您可以使用Apache POI库。下面是一个示例代码,展示了如何实现这两个功能: import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*;import java.io.FileOutputS…...

微信小程序 自定义全局事件监听实现

一般app页面都需要关联刷新,比如登录后刷新登录前页面,故此,需要一个全局事件监听类,怎么实现呢? 根目录创建文件夹utils,新建文件eventBus.js(致敬java平台的EventBus)&#xff0c…...

NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法

NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法。 /*** 返回 UIbtnLocQuery 特性值。* * return nc.ui.pub.beans.UIButton*/ /* 警告:此方法将重新生成。 */ private nc.ui.pub.beans.UIButton getUIbtnLocQuery() {// 搜索全部 按钮return getButtonPan…...

在SpringBoot使用MongoDB时出现的bug和解决

在springboot使用MongoDB时出现的bug和解决 在springboot整合MongoDB时,报错 在springboot整合MongoDB时,报错 INFO 67135 — [ main] org.mongodb.driver.connection : Closed connection [connectionId{localValue:2}] to 127.0.0.1:27017 because there was a socket excep…...

前端面试相关

HTML5 新特征 ✅ HTML5 与es6 新特性cookie 与 sessionStorage 和 localStorage 的区别 ✅Cookie 和localStorage、SessionStorage 区别事件冒泡和事件捕获 ✅ 事件捕获和事件冒泡垂直居中 DIV ✅ 元素垂直水平居中的多种办法(块级 行内元素)两栏布局左边…...

在ubuntu上部署label-studio

1. 安装label-studio 由于服务器的默认python3版本太低,尝试了很多方法,没有升级。因此采用annaconda方式安装label-studio. a.安装anaconda: 参照如下链接,安装anaconda。 Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1&#xff…...

HashSet

HashSet集合底层采取哈希表存储数据 哈希表是一种对于增删改查数据性能都较好的结构 hashCode方法和equals方法的配合流程 当添加对象的时候,会先调用对象的hashCode方法计算出一个应该存入的索引位置,查看该位置上是否存在元素 不存在:直接存…...

Java-继承和多态(下)

补全构造方法 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);while (scanner.hasNextInt()) {int x scanner.nextInt();int y scanner.nextInt();int z scanner.nextInt();Sub sub new…...

Docker搭建并配置Prometheus

首先确保Linux已安装Docker,如未安装请先参考:Linux安装Docker 1.安装准备 创建挂载目录 /opt/prometheus/data目录,准备用来挂载放置prometheus的数据 /opt/prometheus/config目录,准备用来放置prometheus的配置文件 /opt/pro…...

“解放 Arweave“优惠:4EVERLAND的无缝上传教程

为了进一步展示 Arweave 的能力,4EVERLAND 骄傲地推出了“解放 Arweave”活动。我们认识到 Arweave 在数据完整性、抗审查性以及长期保存方面的无与伦比的优势,因此我们与这个去中心化的存储巨头建立了强大的集成。 克服了过去与加密货币支付逻辑相关的…...

百度云服务器一年多少钱/营销网站seo推广

SQLite数据库的体系结构(翻译自sqlite.org) 1 简介 本文档描述了SQLite库的体系结构,这些信息对那些想理解和修改SQLite的内部工作机制的人是有用的。 本文档描述SQLite 3.0版本,2.8版或更早期的版本与此相似,只是细节上有所不同。…...

做联盟 网站 跳转 防止垃圾外链/青岛seo推广公司

如何画前趋图?看了这篇秒懂!(OS前趋图画法) 题目1 画出下面4条语句的前趋图(符号“:”是赋值的意思) S1:a:xy S2:b:z1 S3:c:a-b S4&a…...

姑苏网站制作/肇庆网站制作软件

shiro的可以权限控制内容包括:URL地址、Web页面的元素、以及方法,即shiro对用户权限的控制是细粒度的。从用户的一次访问来说,他可能需要最多经过三种、多次的验证。这里的多次怎么说呢?如果说Web页面的有10个元素加了Shiro标签&a…...

做外贸做独立网站划算吗/网络推广公司简介

包地址:go get -u github.com/spf13/cobra/cobra go mod init blog go get -u github.com/spf13/cobra/cobra具体写一个例子, 设计一个命令叫 blog, 有四个子命令 blog new [post-name] :创建一篇新的blog blog list :列出当前…...

域名进行网站备案吗/昆山网站制作公司

由于公司要求一次 push 只能有一次 commit,然而自己由于操作失误,导致一次修改的内容,分成了两次 commit,再进行 push 的时候就失败了 在网上找了一次找到了如下的方法 合并前两次 commit 的信息 # git rebase -i HEAD~2 将从现…...

淘宝网络营销方案/天津优化网络公司的建议

一、基础知识在自动调节系统中,ESP-PV。其中,E为偏差、SP为给定值、PV为测量值。当SP大于PV时为正偏差,反之为负偏差。比例调节作用的动作与偏差的大小成正比;当比例度为100时,比例作用的输出与偏差按各自量程范围的1&…...