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

ES10(ES2019)新特性完整指南

ES10ES2019新特性发布时间2019年6月ES10 新增了数组扁平化、对象转换、字符串修剪等实用方法。1. Array.prototype.flat()将嵌套数组拉平返回一个新数组基本用法[1,2,[3,4]].flat();// [1, 2, 3, 4][1,2,[3,[4,5]]].flat();// [1, 2, 3, [4, 5]]默认只拉平一层[1,2,[3,[4,5]]].flat(2);// [1, 2, 3, 4, 5]拉平两层使用 Infinity 拉平任意深度[1,[2,[3,[4,[5]]]]].flat(Infinity);// [1, 2, 3, 4, 5]实际应用// 从多层嵌套中提取值letdata[[1,2],[3,4],[5,6]];data.flat();// [1, 2, 3, 4, 5, 6]// 清除数组空位[1,,3,,5].flat();// [1, 3, 5]// 树形数据提取 IDlettree[{id:1,children:[{id:2},{id:3}]},{id:4,children:[]}];letidstree.flatMap(node[node.id,...node.children.map(cc.id)]);// [1, 2, 3, 4]注意空位会被自动跳过超过4层嵌套时建议用Infinity2. Array.prototype.flatMap()先执行map()再执行flat()效率更高[1,2,3].flatMap(x[x,x*2]);// [1, 2, 2, 4, 3, 6]// 等同于[1,2,3].map(x[x,x*2]).flat();与 map flat 的区别// map flat可以指定 flat 深度[1,[2,[3]]].map(xx).flat(2);// [1, 2, 3]// flatMap只能拉平一层[1,[2,[3]]].flatMap(xx);// [1, 2, [3]]实际应用// 将句子拆分为单词数组letsentences[Hello World,Good Morning];letwordssentences.flatMap(ss.split( ));// [Hello, World, Good, Morning]// 一对多映射letusers[{name:张三,hobbies:[篮球,游泳]},{name:李四,hobbies:[足球]}];lethobbiesusers.flatMap(uu.hobbies);// [篮球, 游泳, 足球]// 过滤 映射一步完成[1,2,3,4].flatMap(xx2?[x]:[]);// [3, 4]3. Object.fromEntries()将键值对列表转为对象是Object.entries()的逆操作// entries对象 → 键值对数组letentriesObject.entries({a:1,b:2});// [[a, 1], [b, 2]]// fromEntries键值对数组 → 对象letobjObject.fromEntries(entries);// { a: 1, b: 2 }实际应用过滤对象属性letobj{a:1,b:2,c:3,d:4};letfilteredObject.fromEntries(Object.entries(obj).filter(([k,v])v2));// { c: 3, d: 4 }映射对象值letprices{apple:5,banana:3,orange:4};letdoubledObject.fromEntries(Object.entries(prices).map(([k,v])[k,v*2]));// { apple: 10, banana: 6, orange: 8 }转换 Map 为对象letmapnewMap([[a,1],[b,2]]);letobjObject.fromEntries(map);// { a: 1, b: 2 }URL 参数处理letparamsnewURLSearchParams(name张三age18);letobjObject.fromEntries(params);// { name: 张三, age: 18 }4. String.prototype.trimStart()去除字符串开头的空白字符 hello world .trimStart();// hello world hello world .trimLeft();// hello world 别名去除的字符空格、制表符\t、换行符\n、回车符\r等5. String.prototype.trimEnd()去除字符串末尾的空白字符 hello world .trimEnd();// hello world hello world .trimRight();// hello world别名对比 trim() hello .trim();// hello两端都去 hello .trimStart();// hello 只去开头 hello .trimEnd();// hello只去末尾6. 可选的 catch 绑定Optional catch bindingcatch参数可以省略// 旧写法必须写参数try{JSON.parse(invalid);}catch(err){console.log(出错了);}// ES10 新写法可以省略参数try{JSON.parse(invalid);}catch{console.log(出错了);}使用场景当不需要使用错误对象时functionparseJSON(str){try{returnJSON.parse(str);}catch{returnnull;// 不需要错误信息返回默认值}}7. Symbol.prototype.description获取 Symbol 的描述字符串lets1Symbol(hello);s1.description;// hellolets2Symbol();s2.description;// lets3Symbol();s3.description;// undefinedlets4Symbol(你好);s4.description;// 你好对比 toString()letsSymbol(test);s.toString();// Symbol(test)s.description;// test只返回描述不带 Symbol()8. JSON supersetJSON 超集ES10 允许在 JSON 字符串中使用 U2028行分隔符和 U2029段分隔符// ES9 及之前这两个字符在字符串中会导致语法错误// ES10 修复了这个问题constjson\u2028;JSON.parse(json);// ES10 中正常工作这个改动是内部修复对日常开发感知不强。9. Function.prototype.toString() 修订toString()返回函数的源代码包括注释和空格functionhello(){/* 注释 */returnworld;}console.log(hello.toString());// 输出完整的函数源码包括注释// function hello() {\n /* 注释 */\n return world;\n}10. Array.prototype.sort() 稳定性ES10 规范要求Array.sort()必须是稳定排序letitems[{name:A,order:1},{name:B,order:1},{name:C,order:2}];// 稳定排序相同 order 的元素保持原始顺序items.sort((a,b)a.order-b.order);// A 仍在 B 前面保持原始相对顺序总结特性说明重要性Array.flat()数组扁平化⭐⭐⭐⭐Array.flatMap()map flat 组合⭐⭐⭐⭐Object.fromEntries()键值对数组转对象⭐⭐⭐⭐String.trimStart()去除开头空白⭐⭐⭐String.trimEnd()去除末尾空白⭐⭐⭐可选 catch 绑定catch 可省略参数⭐⭐⭐Symbol.description获取 Symbol 描述⭐⭐JSON 超集支持行分隔符⭐Function.toString()返回完整源码⭐稳定排序sort 保证稳定性⭐⭐ject.fromEntries()键值对数组转对象⭐⭐⭐⭐String.trimStart()去除开头空白⭐⭐⭐String.trimEnd()去除末尾空白⭐⭐⭐可选 catch 绑定catch 可省略参数⭐⭐⭐Symbol.description获取 Symbol 描述⭐⭐JSON 超集支持行分隔符⭐Function.toString()返回完整源码⭐稳定排序sort 保证稳定性⭐⭐

相关文章:

ES10(ES2019)新特性完整指南

ES10(ES2019)新特性发布时间:2019年6月 ES10 新增了数组扁平化、对象转换、字符串修剪等实用方法。1. Array.prototype.flat() 将嵌套数组"拉平",返回一个新数组: 基本用法 [1, 2, [3, 4]].flat(); //…...

终极指南:Hilt依赖注入在Droid-ify开源应用中的实战应用 [特殊字符]

终极指南:Hilt依赖注入在Droid-ify开源应用中的实战应用 🚀 【免费下载链接】client F-Droid client with Material UI. 项目地址: https://gitcode.com/gh_mirrors/clie/client 在Android应用开发领域,Droid-ify作为一个优秀的F-Dro…...

华为 eNSP 实战:SSH 密钥认证配置与安全加固指南

1. 为什么选择SSH密钥认证而非密码? 在华为eNSP模拟的企业网络环境中,传统的SSH密码认证虽然比Telnet安全,但依然存在被暴力破解的风险。我曾在实际项目中发现,使用弱密码的设备在暴露公网后,平均每天会遭受上千次登录…...

2023B卷,IPv4地址转换成整数

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:华为OD面试 文章目录 一、🍀前言 1.1 ☘️题目详情 1.2 ☘️参考解题答案 一、🍀前言 2023B卷,IPv4地址转换成整数。 1.1 ☘️题目详情 题目: 存…...

Syncfusion Dashboard部署指南:从开发到生产环境的完整流程

Syncfusion Dashboard部署指南:从开发到生产环境的完整流程 【免费下载链接】project_syncfusion_dashboard This is a code repository for the corresponding YouTube video. In this tutorial we are going to build and deploy a an admin dashboard app using …...

MySQL开发者必看:金仓数据库兼容性迁移避坑指南(含外键处理技巧)

MySQL开发者必看:金仓数据库兼容性迁移避坑指南(含外键处理技巧) 当企业级应用需要从MySQL迁移到金仓数据库时,开发者往往会面临一系列兼容性挑战。作为国产数据库的代表,金仓数据库虽然提供了MySQL兼容模式&#xff0…...

老旧设备系统升级技术解析:4步实战指南让旧Mac焕发新生

老旧设备系统升级技术解析:4步实战指南让旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 老旧Mac设备升级macOS系统是许多用户面临的技术难题&am…...

5个WebGL流体模拟创新体验让你轻松打造动态视觉艺术

5个WebGL流体模拟创新体验让你轻松打造动态视觉艺术 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 当静态网页设计已无法满足用户对交互体验…...

三步突破语音克隆音质瓶颈:VoxCPM ZipEnhancer全解析

三步突破语音克隆音质瓶颈:VoxCPM ZipEnhancer全解析 【免费下载链接】VoxCPM VoxCPM: Tokenizer-Free TTS for Context-Aware Speech Generation and True-to-Life Voice Cloning 项目地址: https://gitcode.com/GitHub_Trending/vo/VoxCPM 在语音合成领域&…...

Wan2.2-I2V-A14B绿色AI实践:显存优化降低35%功耗的碳足迹测算

Wan2.2-I2V-A14B绿色AI实践:显存优化降低35%功耗的碳足迹测算 1. 引言:绿色AI的迫切需求 在AI技术快速发展的今天,大模型训练和推理带来的能源消耗问题日益突出。Wan2.2-I2V-A14B作为一款先进的文生视频模型,通过显存优化技术实…...

Django CORS Headers终极配置指南:Vue、React、Angular前端框架完美集成方案

Django CORS Headers终极配置指南:Vue、React、Angular前端框架完美集成方案 【免费下载链接】django-cors-headers Django app for handling the server headers required for Cross-Origin Resource Sharing (CORS) 项目地址: https://gitcode.com/gh_mirrors/d…...

open-parse快速入门:5分钟掌握智能文档解析的终极方法

open-parse快速入门:5分钟掌握智能文档解析的终极方法 【免费下载链接】open-parse Improved file parsing for LLM’s 项目地址: https://gitcode.com/gh_mirrors/op/open-parse open-parse是一款专为LLM(大语言模型)优化的智能文档解…...

WildFly核心特性深度解析:快速启动、模块化设计与统一管理

WildFly核心特性深度解析:快速启动、模块化设计与统一管理 【免费下载链接】wildfly WildFly Application Server 项目地址: https://gitcode.com/gh_mirrors/wi/wildfly WildFly应用服务器作为业界领先的开源Java EE/Jakarta EE实现,以其卓越的性…...

Legacy-iOS-Kit系统降级全指南:让老旧iOS设备重获新生

Legacy-iOS-Kit系统降级全指南:让老旧iOS设备重获新生 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to downgrade/restore, save SHSH blobs, and jailbreak legacy iOS devices 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 一、问…...

10个企业级Windows自动化场景:pywinauto终极应用指南

10个企业级Windows自动化场景:pywinauto终极应用指南 【免费下载链接】pywinauto pywinauto/pywinauto: 一个 Python 库,用于自动化 Windows 应用程序。特点是提供了丰富的函数和类库,可以用于控制鼠标、键盘和菜单等元素,实现自动…...

别再混淆了!JavaScript与Java的10个本质区别(附常见面试题解析)

别再混淆了!JavaScript与Java的10个本质区别(附常见面试题解析) 当面试官问"Java和JavaScript有什么区别"时,超过60%的初级开发者会给出"它们就像汽车和地毯的关系"这类玩笑式回答。但真正理解这两种语言的核…...

百考通:AI全流程智能化赋能期刊论文写作,让学术创作更高效

在学术研究领域,期刊论文的撰写是成果输出的关键环节,却也让众多科研工作者与学生倍感压力:选题迷茫、逻辑梳理困难、格式规范复杂、内容提炼耗时,严重拖慢了学术成果的发表节奏。百考通(https://www.baikaotongai.com…...

百考通:AI全流程智能化赋能答辩PPT,让学术展示更高效从容

毕业季、开题季,一份专业出彩的PPT是顺利通过答辩的关键。但从论文中提炼核心观点、规划答辩逻辑、设计美观版式,往往让学生们焦头烂额。百考通(https://www.baikaotongai.com) 凭借AI技术深度赋能,打造出一站式答辩PP…...

FFCreator 10个实用技巧:轻松掌握视频制作的核心功能

FFCreator 10个实用技巧:轻松掌握视频制作的核心功能 【免费下载链接】FFCreator 一个基于node.js的高速视频制作库 A fast video processing library based on node.js 项目地址: https://gitcode.com/gh_mirrors/ff/FFCreator FFCreator是一个基于Node.js的…...

CPUDoc:解锁CPU隐藏性能的智能优化工具

CPUDoc:解锁CPU隐藏性能的智能优化工具 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 在当今计算环境中,CPU性能优化已成为提升整体系统体验的关键因素。CPUDoc作为一款免费开源的CPU辅助工具,通过创…...

【效率翻倍】不止是安装:用Apache 2.4 + Win10快速搭建本地PHP/WordPress测试环境

效率翻倍:Apache 2.4 Win10 构建全功能PHP/WordPress开发环境实战指南 在本地开发环境中快速搭建Web服务器是每个PHP开发者或WordPress站长的必备技能。传统教程往往止步于Apache的基础安装,却忽略了实际开发中需要的完整工具链——从PHP解释器集成到虚…...

CVE-2025-55182:React Flight协议反序列化漏洞深度剖析与实战复现

1. 漏洞背景与影响范围 最近React社区爆出一个高危漏洞CVE-2025-55182,这个漏洞的核心问题出在React Flight协议的序列化/反序列化机制上。简单来说,攻击者可以通过构造特殊的HTTP请求,在服务端执行任意代码。我在测试环境中复现这个漏洞时发…...

深度解析ThreeFingerDragOnWindows:Windows触控板三指拖动技术实现

深度解析ThreeFingerDragOnWindows:Windows触控板三指拖动技术实现 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeF…...

3步学会BilibiliDown:零基础掌握B站视频下载的终极指南

3步学会BilibiliDown:零基础掌握B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...

EfficientViT语义分割深度解析:从Cityscapes到实时应用

EfficientViT语义分割深度解析:从Cityscapes到实时应用 【免费下载链接】efficientvit EfficientViT is a new family of vision models for efficient high-resolution vision. 项目地址: https://gitcode.com/gh_mirrors/ef/efficientvit EfficientViT语义…...

3种方案实现小米智能家居与Home Assistant无缝集成

3种方案实现小米智能家居与Home Assistant无缝集成 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 你是否遇到过智能家居设备品牌碎片化的困扰?是否希望用统…...

StabilityGuide故障排查终极指南:从OutOfMemoryError到StackOverFlowError的完整解决方案

StabilityGuide故障排查终极指南:从OutOfMemoryError到StackOverFlowError的完整解决方案 【免费下载链接】StabilityGuide 项目地址: https://gitcode.com/gh_mirrors/st/StabilityGuide StabilityGuide是阿里巴巴开源的系统稳定性知识库,专注于…...

AndroidTVLauncher自定义功能卡片开发:FunctionCardPresenter实现原理与实践

AndroidTVLauncher自定义功能卡片开发:FunctionCardPresenter实现原理与实践 【免费下载链接】AndroidTVLauncher This is a leanback style tv launcher(minSdkVersion 17) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidTVLauncher AndroidTVLaunch…...

VIBE革命性视频人体姿态估计:CVPR2020获奖论文完整实现解析

VIBE革命性视频人体姿态估计:CVPR2020获奖论文完整实现解析 【免费下载链接】VIBE Official implementation of CVPR2020 paper "VIBE: Video Inference for Human Body Pose and Shape Estimation" 项目地址: https://gitcode.com/gh_mirrors/vi/VIBE …...

如何通过Windows Cleaner实现C盘空间释放:提升系统性能的完整指南

如何通过Windows Cleaner实现C盘空间释放:提升系统性能的完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘爆红的困扰&#…...