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

ES2023(ES14)新特性有什么?

1. Array.prototype.with

with 方法返回一个新数组,替换指定索引处的元素

const arr = ['a', 'b', 'c', 'd'];
const res = arr.with(2, 'f');
console.log(res);//['a', 'b', 'f', 'd']
console.log(arr);//['a', 'b', 'c', 'd']
Array.prototype.toSorted  

2. Array.prototype.toSorted

toSorted 方法返回一个新的已排序数组,不改变原数组。

const numbers = [5, 3, 2, 4, 1];
const sortedNumbers = numbers.toSorted();
console.log(sortedNumbers); // [1, 2, 3, 4, 5]
console.log(numbers); // [5, 3, 2, 4, 1]  // 原数组不变

3. Array.prototype.toReversed

toReversed 方法返回一个新的数组,其元素顺序是原数组的反转。 和reverse()类似,但它会改变原数组

const numbers = [5, 3, 2, 4, 1];
const sortedNumbers = numbers.toSorted();
console.log(sortedNumbers); // [1, 2, 3, 4, 5]
console.log(numbers); // [5, 3, 2, 4, 1]  // 原数组不变
Array.prototype.toSpliced  
const months = ['Jan', 'Mar', 'Apr', 'May'];// 在索引 1 处添加一个元素
const months2 = months.toSpliced(1, 0, 'Feb');
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]// 从第 2 个索引开始删除两个元素
const months3 = months.toSpliced(2);
console.log(months3); // ["Jan", "Mar"]console.log(months); //['Jan', 'Mar', 'Apr', 'May'];

4. Array.prototype.toSpliced

toSpliced 是一种数组操作方法,它与 splice 类似,但toSpliced不会修改原数组,而是返回一个新数组,包含删除和新增元素后的结果。它在操作数组时更加安全,因为不会改变原始数据。

const months = ['Jan', 'Mar', 'Apr', 'May'];// 在索引 1 处添加一个元素
const months2 = months.toSpliced(1, 0, 'Feb');
console.log(months2); // ["Jan", "Feb", "Mar", "Apr", "May"]// 从第 2 个索引开始删除两个元素
const months3 = months.toSpliced(2);
console.log(months3); // ["Jan", "Mar"]console.log(months); //['Jan', 'Mar', 'Apr', 'May'];

5. Object.hasOwn

Object.hasOwnObject.prototype.hasOwnProperty 的简写,检查属性是否是对象的自身属性,并不是继承来的。

const obj = {a: 1,
};
console.log(obj);
console.log(Object.hasOwn(obj, 'a'));//true
console.log(Object.hasOwn(obj, 'valeOf'));//false

6. findLast() 和 findLastIndex()

findLast(): 由后往前通过索引查找数组中符合条件的第一个元素。

const array1 = [5, 12, 50, 130, 44];const found = array1.findLast((element) => element > 45);console.log(found);// 130

findLastIndex(): 由后往前通过索引查找数组中符合条件的第一个元素所在的索引。

const array1 = [5, 12, 50, 130, 44];const isLargeNumber = (element) => element > 45;console.log(array1.findLastIndex(isLargeNumber));//3

7. Hashbang 语法

Hashbang 注释是一种特殊的注释语法,它会以#!开头,后面仅跟着解释器(interpreter) 的路径,并且只会在脚本或是模组的最开始有效。
以下方代码为例,这段代码是告诉系统,用 Node.js 来执行文件:

#!/usr/bin/env node
console.log('Hello, world!');

8. WeakMap 支持 Symbol 作为 key

Symbols 具有唯一的标识,适合生成唯一的键。
🔍什么是Symbol?在实际开发中怎么用?

const keyA = Symbol('fruit');
const keyB = Symbol('fruit');const map = new WeakMap();
map.set(keyA, 'apple');console.log(map.get(keyA)); // "apple"
console.log(map.get(keyB)); // undefined
http://www.lryc.cn/news/418279.html

相关文章:

  • Linux 中的特殊文件权限:SUID、GUID 和 Sticky
  • 2024 某公司python 面试真题
  • jwt伪造身份组组组合拳艰难通关
  • leetcode日记(64)最小覆盖子串
  • C语言——编译与链接
  • 你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解
  • 嵌入式初学-C语言-十七
  • leetcode数论(2280. 表示一个折线图的最少线段数)-几何
  • 如何利用 LNMP 搭建 WordPress 站点
  • “Mutation Observer:让DOM变化尽在掌握
  • oracle(19c)用户管理
  • 浅谈安科瑞智慧用电系统在电气火灾中的应用
  • 【Material-UI】Button 组件中的尺寸设置(Sizes)详解
  • Java学习Day20
  • 代理IP怎么弄,如何在电脑中设置IPXProxy代理IP?
  • MacOS 查看端口命令
  • 【python】序列化与反序列化
  • 补充:关于GRU的详细运作原理以及特殊的优化思路
  • xxl-job 源码梳理(2)-服务端
  • C++ GDl+ 多张图片合并生成GIF动画格式图片
  • 【C++】模拟实现list
  • 怎么使用git merge合并两个分支?
  • ios 5.5寸、ipad13英寸如何截屏
  • spdlog日志库--输出格式(fmt 库集成)
  • Docker简介 MacM1安装Docker
  • 【Linux】yum软件包管理器(使用、生态、yum源切换)
  • 群晖NAS安装Video Station结合内网穿透实现远程访问本地存储的影音文件
  • Vue中@click.stop与@click.prevent
  • 沐风老师3DMax对象随机颜色插件使用方法
  • 安卓将子模块打aar包,并将其远程依赖打包进去