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

ES10(ES2019)新特性整理

一、Array.prototype.flat() 和 flatMap()(数组扁平化)

(1)flat(depth)

  • 将嵌套数组“拉平”到指定深度(默认 depth=1)。

    const arr = [1, [2, [3]]];
    arr.flat();      // [1, 2, [3]](默认深度 1)
    arr.flat(2);     // [1, 2, 3](深度 2)

(2)flatMap()

  • 先对数组每个元素执行映射,再将结果扁平化(深度固定为 1)。

    const arr = ["Hello", "World"];
    arr.flatMap(str => str.split("")); 
    // ["H", "e", "l", "l", "o", "W", "o", "r", "l", "d"]

适用场景

  • 处理嵌套数组(如 API 返回的多维数据)

  • 合并映射和扁平化操作(比 map + flat 更高效)

 

二、Object.fromEntries()(键值对转对象)
  • 将键值对列表(如 MapArray)转换为对象,是 Object.entries() 的逆操作。

    const entries = [ ['name', 'Alice'], ['age', 30] ];
    const obj = Object.fromEntries(entries);
    // { name: "Alice", age: 30 }

典型用途

  • 将 URLSearchParams 转为对象

  • 转换 Map 为普通对象

    const params = new URLSearchParams("name=Alice&age=30");
    Object.fromEntries(params); // { name: "Alice", age: "30" }

 三、String.prototype.trimStart() 和 trimEnd()
  • 分别移除字符串开头或结尾的空格(别名:trimLeft() / trimRight())。

    const str = "   Hello   ";
    str.trimStart(); // "Hello   "
    str.trimEnd();   // "   Hello"
  • 对比旧方法

  • trim():移除两端空格。

  • trimStart()/trimEnd():更精确控制。

四、Optional Catch Binding(可选的 catch 参数)
  • 允许省略 catch 中的错误参数(如果不需要使用错误对象)。

    try {JSON.parse("invalid json");
    } catch { // 不需要写 catch (error)console.log("解析失败");
    }

适用场景

  • 不需要处理具体错误时简化代码。

五、Symbol.prototype.description
  • 获取 Symbol 的描述字符串(定义时的参数)。

    const sym = Symbol("自定义描述");
    sym.description; // "自定义描述"

用途

  • 调试时快速查看 Symbol 的用途。

六、JSON.stringify 改进
  • 修复对 \u2028(行分隔符)和 \u2029(段落分隔符)的序列化,使其符合 JSON 标准。

    // 早期版本会将这些字符转义为 \uXXXX,现在直接输出
    JSON.stringify("\u2028"); // ""\u2028""

七、Function.prototype.toString() 改进
  • 返回函数完整的原始代码(包括注释和空格),而不仅是 "function() { ... }"

    function foo() {// 这是一个函数console.log("Hello");
    }
    foo.toString(); 
    // 完整输出:
    // "function foo() {
    //   // 这是一个函数
    //   console.log("Hello");
    // }"

用途

  • 动态代码分析、代码格式化工具。

八、Array.prototype.sort() 稳定排序
  • 规定 sort() 必须使用稳定排序算法(相同元素保持原始顺序)。

    const users = [{ name: "Alice", age: 30 },{ name: "Bob", age: 25 },{ name: "Alice", age: 20 }
    ];
    // 按 name 排序后,相同 name 的 age 顺序不变
    users.sort((a, b) => a.name.localeCompare(b.name));

影响

  • 对复杂对象的排序更可靠。

注:如有缺失,请联系作者或在下方评论,我尽量在第一时间补充上去!!!  

 

 

 

 

 

 

 

http://www.lqws.cn/news/520957.html

相关文章:

  • 华为运维工程师面试题(英语试题,内部资料)
  • mysql 5.1 升级 mysql 5.7 升级 mariadb10
  • RabbitMq中使用自定义的线程池
  • 基于R语言的亚组分析与森林图绘制1
  • 微算法科技融合Grover算法与统一哈希函数的混合经典-量子算法技术,可在多领域高效提升文本处理效率
  • win11搭建Python开发环境指南
  • MAC、IP地址、TCP、UDP、SSL、OSI模型
  • 【MCP 实战4-1】开发 OpenSearch MCP server
  • 南北差异之——理解业务和理解产品
  • spring项目启动sheel脚本
  • 惯性导航——陀螺仪
  • 解决git pull,push 每次操作输入账号密码问题
  • 基于STM32的个人健康助手的设计
  • 鸿蒙应用开发中的数据存储:SQLite与Preferences全面解析
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • Kotlin 协程:全面解析与深度探索
  • 工业“三体”联盟:ethernet ip主转profinet网关重塑设备新规则
  • python哈尔滨中心医院用户移动端
  • Docker安装教程-linux
  • LinkAOS网上开户系统解析与开发实践
  • 初学python的我开始Leetcode题10-3
  • 2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(二)
  • 掌握CIS基准合规性:通过自动化简化网络安全
  • 【Lua 基础学习】
  • P2840 纸币问题 2(动态规划)
  • 7.Spring框架
  • “Ubuntu 18.04.6 LTS“ 配置网卡静态IP
  • BGP边界网关协议
  • 【视频芯片选型】
  • Bugku-CTF-web(适合初学者)