ECMAScript2023你学习了吗?
一、ES2023 Features
- 【Array find from last】 从头到尾搜索数组:findLast() 、findLastIndex()
- 【Hashbang Grammar】Hashbang 语法
- 【Symbols as WeakMap keys】Symbol 作为 WeakMap 的键
- 【Change array by copy】通过副本更改数组:toReversed()、toSorted()、toSpliced()、with()
二、数组倒序查找
Array.prototype.findLast 和 Array.prototype.findLastIndex
let nums = [5,4,3,2,1];
let lastEven = nums.findLast((num) => num % 2 === 0); // 2
let lastEvenIndex = nums.findLastIndex((num) => num % 2 === 0); // 3
三、Hashbang 语法
#! for JS
此脚本的第一行以 #!开头,表示可在注释中包含任意文本。
Hashbang 就是想为 JavaScript 脚本引入了#!命令,这个命令写在脚本文件或者模块文件的第一行
#!/usr/bin/env node
// in the Script Goal
'use strict';
console.log(1);

四、将符号作为 WeakMap 键
在弱集合和注册表中使用符号
注意:注册的符号不可作为 weakmap 键。
学过ES6就知道,只能使用一个对象作为 WeakMap 的key:
const w = new WeakMap()
const user = { name: 'zz' }w.set(user, 'boy')
console.log(w.get(user)) // 'boy'
现在我们使用Symbol作为WeakMap的key:
const w = new WeakMap()
const user = Symbol('zz')w.set(user, 'boy')
console.log(w.get(user)) // 'boy'
五、通过副本更改数组
此次公布的新方法正是toSorted、toReversed、toSpliced 和 with 都能复制原始数组、变更副本再返回结果。
· reverse() 的非破坏性版本:toReversed()
· sort() 非破坏性版本:toSorted(compareFn)
· splice() 非破坏性版本:toSpliced(start, deleteCount, …items)
1、Array.prototype.toSorted
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const sorted = languages.toSorted();
console.log(sorted); // [ 'CoffeeScript', 'JavaScript', 'TypeScript' ]
console.log(languages); // [ 'JavaScript', 'TypeScript', 'CoffeeScript' ]
除了复制之外,sort 函数还会引发一些意想不到的行为,toSorted 也继承了这种特点。
所以在对带有重音字符的数字或字符串进行排序时,大家仍然要小心。比如准备一个 comparator 比较器函数(例如 String’s localeCompare)来生成当前查找的结果。
const numbers = [5, 3, 10, 7, 1];
const sorted = numbers.toSorted();
console.log(sorted); // [ 1, 10, 3, 5, 7 ]const sortedCorrectly = numbers.toSorted((a, b) => a - b);
console.log(sortedCorrectly); // [ 1, 3, 5, 7, 10 ]
const strings = ["abc", "äbc", "def"];
const sorted = strings.toSorted();
console.log(sorted); // [ 'abc', 'def', 'äbc' ]const sortedCorrectly = strings.toSorted((a, b) => a.localeCompare(b));
console.log(sortedCorrectly); // [ 'abc', 'äbc', 'def' ]
2、Array.prototype.toReversed
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const reversed = languages.toReversed();
console.log(reversed); // [ 'CoffeeScript', 'TypeScript', 'JavaScript' ]
3、Array.prototype.toSpliced
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const spliced = languages.toSpliced(2, 1, "Dart", "WebAssembly");
console.log(spliced);
// [ 'JavaScript', 'TypeScript', 'Dart', 'WebAssembly' ]
4、Array.prototype.with
with 函数所代表的复制方法,等同于使用方括号表示方来更改数组内的一个元素。因此,与其通过以下方式直接更改数组:
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
languages[2] = "WebAssembly";
console.log(languages);
// => [ 'JavaScript', 'TypeScript', 'WebAssembly' ]
可以复制该数组再执行更改:
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const updated = languages.with(2, "WebAssembly");
console.log(updated);
// => [ 'JavaScript', 'TypeScript', 'WebAssembly' ]
console.log(languages);
// => [ 'JavaScript', 'TypeScript', CoffeeScript' ]
此次发布的新方法不仅适用于常规的数组对象。您可以在任意 TypedArray 上使用 toSorted、toReversed 和 with 方法,包括 Int8Array 到 BigUint64Array 等各种类型。但因为 TypedArrays 没有 splice 方法,因此无法使用 toSpliced 方法。
六、浏览器支持 目前主流浏览器都以支持以上方法
七、ECMAScript2023你学习了吗?
相关文章:
ECMAScript2023你学习了吗?
一、ES2023 Features 【Array find from last】 从头到尾搜索数组:findLast() 、findLastIndex()【Hashbang Grammar】Hashbang 语法【Symbols as WeakMap keys】Symbol 作为 WeakMap 的键【Change array by copy】通过副本更改数组:toReversed()、toSo…...
【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 重点放前面&am…...
【JMeter】配置元件
1. 元件的分类 HTTP Request Default 作用: 可以配置成通用的信息,可复用 JDBC Connection Configuration 作用:连接数据库 前提: 下载好对应数据类型的jar包 HTTP Header Manager信息头管理…...
数据采集静态存储SRAM芯片EMI7064
数据采集是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头,麦克风,都是数据采集工具。 ram工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。RAM在计算…...
网络运维与网络安全 学习笔记2023.11.27
网络运维与网络安全 学习笔记 第二十八天 今日目标 OSPF基本原理、OSPF单区域配置、OSPF多区域配置 特殊区域之Stub、特殊区域之NSSA OSPF基本原理 项目背景 随着企业的发展,网络的规模越来越大,网段的数量越来越多,公司内部的路由器的…...
ansible学习
一文掌握 Ansible 自动化运维 - 知乎 ansible的安装与简单的使用_坚持到所有人都放弃!!!的技术博客_51CTO博客 Ansible中文权威指南 — 国内最专业的Ansible中文官方学习手册 (ansible-tran.readthedocs.io) 安装 # yum -y install epel-release //更新本地安装库 # yu…...
使用Kibana让es集群形象起来
部署Elasticsearch集群详细步骤参考本人: https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502 kibana部署 es集群设备 安装软件主机名…...
机器学习调参指南:提升模型性能的关键步骤
诸神缄默不语-个人CSDN博文目录 文章目录 1. 理解模型的参数和超参数2. 使用网格搜索进行超参数调优3. 随机搜索4. 贝叶斯优化5. 使用交叉验证避免过拟合6. 考虑正则化7. 调整学习率和其他优化器参数8. 实验和记录9. 模型的早停法10. 总结 在机器学习和深度学习的领域中&#x…...
图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC视图View
Asp.net web应用程序MVC之View视图 .ASP.NET MVC页面也就是要说的视图基本被放在Views文件夹下; 2.利用APS.NET MVC模板生成框架,Views文件夹下的默认页面为.cshtml页面; 3.ASP.NET MVC默认页面为Razor格式的页面,因此默认页面为.…...
Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细
安装前请关闭杀毒软件,系统防火墙,断开网络连接 参考链接:请点击 下载链接: 通过百度网盘分享的文件:VS2010.zip 链接:https://pan.baidu.com/s/1yQUUCxMJP7FMaistFX94SQ 提取码:96ga 复制这段内容打开「百度网盘APP …...
第四节HarmonyOS 熟知开发工具DevEco Studio
一、设置主体样式 默认的代码主题样式是黑暗系的,如下图所示: 如果你不喜欢,可以按照一下步骤进行修改: 左上角点击Flie->Settings->Appearance&Behavior->Appearance,点击Theme,在弹出的下拉…...
安防视频监控/视频融合/云存储EasyCVR页面数据显示不全该如何解决?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
vatee万腾的数字化奇点:Vatee科技的前沿创新之路
随着科技迅猛发展,Vatee万腾在数字化领域创造了引人注目的新迹。Vatee以其独特的数字化力量,引领着科技创新的前沿,为未来的数字化社会描绘着崭新的画卷。 Vatee的数字化力量体现在其对技术的深刻理解和前瞻性思维上。通过持续的技术探索和创…...
C#,《小白学程序》第六课:队列(Queue)其二,队列的应用,编写《实时叫号系统》
医院里面常见的《叫号系统》怎么实现的? 1 文本格式 /// <summary> /// 下面定义一个新的队列,用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序…...
打造数字人偶像的意义与影响
在数字化时代,数字人偶像的兴起引发了广泛的关注和讨论。数字人偶像是通过人工智能技术生成真人形象1:1还原的数字人,拥有偶像的外貌、声音和个性。本文将探讨为什么要打造数字人偶像以及其意义与影响。 技术支持:zhibo175 一、…...
Spring加载Bean的多种方式
文章目录 1. XML方式定义2. 使用Component ComponentScan3. 使用Configuration Bean4. 使用FactoryBean的方式加载bean5. Import方式6. Import ImportSelector7. Import ImportBeanDefinitionRegistrar8. 实现接口BeanDefinitionRegistryPostProcessor9. 实现接口BeanFacto…...
minio分布式存储系统
目录 拉取docker镜像 minio所需要的依赖 文件存放的位置 手动上传文件到minio中 工具类上传 yml配置 config类 service类 启动类 测试类 图片 视频 删除minio服务器的文件 下载minio服务器的文件 拉取docker镜像 拉取稳定版本:docker pull minio/minio:RELEASE.20…...
Kafka 如何保证消息消费的全局顺序性
哈喽大家好,我是咸鱼 今天我们继续来讲一讲 Kafka 当有消息被生产出来的时候,如果没有指定分区或者指定 key ,那么消费会按照【轮询】的方式均匀地分配到所有可用分区中,但不一定按照分区顺序来分配 我们知道,在 Kaf…...
boa+cgi上传文件超过1M报错问题
写在前面 今天需要使用页面上传bin包,文件大概是3.9mb,结果一直报错 POST /cgi-bin/Upgrade.cgi undefined Host: 192.168.137.200:8888 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0 Accept: text/h…...
抖去推--短视频账号矩阵系统saas工具源码技术开发(源头)
一、短视频矩阵系统搭建常见问题? 1、抖去推的短视频AI矩阵营销软件需要一定的技术水平吗? 答:不需要。产品简单易用,不需要具备专业的技术水平,即使是初学者,也能够轻松上手操作。 3、抖去推的短视频AI矩…...
如何在 Discord.py 中实现按钮权限控制:仅允许特定角色点击
本文详解如何在 discord.py 的 discord.ui.Button 中实现基于用户角色的访问控制,通过运行时检查角色权限替代无效的 commands.has_role 装饰器,并提供可直接复用的安全代码模板。 本文详解如何在 discord.py 的 discord.ui.button 中实现基于用户角…...
零基础也能玩转数据:PandasAI让你的数据会说话
零基础也能玩转数据:PandasAI让你的数据会说话 【免费下载链接】pandas-ai Chat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG. 项目地址: https://gitcode.com/GitHub_Trending/p…...
VMware Unlocker终极指南:3分钟在Windows/Linux上运行macOS虚拟机
VMware Unlocker终极指南:3分钟在Windows/Linux上运行macOS虚拟机 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker VMware Unlocker是一款革命性的开源工具,它能突破VMware对macO…...
告别目标检测框!用ALBEF和ViT-BERT轻松搞定多模态图文匹配(附代码实战)
无需目标检测框的跨模态革命:ALBEF实战图文匹配新范式 当我在去年尝试构建一个电商图文检索系统时,最头疼的不是模型调参,而是处理那些密密麻麻的目标检测框标注——每个商品都要精确标注位置和属性,团队为此投入了三周时间却只完…...
腾讯云轻量服务器一键部署OpenClaw教程
本文主要分享如何利用腾讯云轻量应用服务器,搭建个人可用的AI应用,全程聚焦技术实操,适合零基础个人开发者、AI爱好者参考,步骤清晰可落地,兼顾稳定性和实用性。 一、选择腾讯云搭建个人AI应用的核心原因(客…...
从“相爱相杀”到“黄金三角”——将协同能力打造为个人与团队的核心竞争力
该文章同步至OneChan ——在芯片开发的复杂系统中,成为不可替代的连接者与放大器 当单个技术专家的个人英雄主义让位于系统性的团队协同,你所在的团队就具备了征服最复杂芯片挑战的终极武器。 引言:那个“全明星”团队的溃败 我曾见证过一个…...
15分钟搞定黑苹果EFI配置:OpCore-Simplify如何解决传统方案98%的技术难题?
15分钟搞定黑苹果EFI配置:OpCore-Simplify如何解决传统方案98%的技术难题? 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹…...
Tiktokenizer:如何让AI的“语言思维“变得可视化?
Tiktokenizer:如何让AI的"语言思维"变得可视化? 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer "当AI模型阅读你的文字时,它究竟…...
如何用KaTrain围棋AI彻底改变你的棋艺提升路径:从智能分析到实战精进的深度解析
如何用KaTrain围棋AI彻底改变你的棋艺提升路径:从智能分析到实战精进的深度解析 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 你是否曾陷入"复盘一小时…...
从零开始:使用PyTorch 2.7镜像快速运行YOLO项目
从零开始:使用PyTorch 2.7镜像快速运行YOLO项目 1. 环境准备与快速部署 PyTorch 2.7镜像是一个开箱即用的深度学习环境,预装了PyTorch和CUDA工具包,能够直接调用GPU加速模型训练和推理。这个镜像特别适合想要快速上手计算机视觉项目的开发者…...
