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.pswp.cn/diannao/88486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88486.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于 LCD1602 的超聲波測距儀設計與實現:從原理到應用

具體材料可在主頁資源里下載 超聲波測距技術作為非接觸式測量的重要手段,在工業檢測、智能家居、機器人避障等領域有著廣泛應用。本文將詳細介紹一款基于 STC89C51 單片機與 LCD1602 顯示屏的超聲波測距系統,從硬件架構到軟件實現,完整呈現一…

2.5G/5G/10G自協商An

IEEE 802.3 協議中,**2.5GBASE-T、5GBASE-T 和 10GBASE-T** 的鏈路自協商(auto-negotiation,簡稱 AN)是在物理層(PHY)完成的。它的作用是: * **讓連接雙方(主機和對端)自…

閑庭信步使用SV搭建圖像測試平臺:第五課——使用task

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊top_tb.bat文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程…

Android數據庫GreenDao的使用

簡介 GreenDao 是一個輕量級的對象關系映射(ORM)庫,用于簡化 Android 應用中的數據庫操作。它提供了以下主要功能: 簡化數據庫操作:通過注解定義實體類,GreenDao 自動生成 DAO(數據訪問對象&a…

24小時留言板

title: 24小時留言板 date: 2025-06-25 23:32:53 tags: 代碼工具 24小時留言板 核心效果如圖所示 代碼解析 # TodoController 代碼解析## 整體架構 這是一個基于Spring WebFlux的響應式控制器,結合Redis發布\訂閱機制實現實時更新的待辦事項系統。關鍵組件包括&a…

深入理解Redis整數集合(intset)的升級策略:內存優化的核心魔法

引言 作為Redis中最節省內存的數據結構之一,整數集合(intset) 專門用于高效存儲整型數據。但你可能不知道,它背后藏著一個精妙的「動態升級」機制——能在不浪費內存的前提下,靈活適配不同大小的整數。今天我們就來扒…

高性能計算(HPC)集群和工作流:intel-oneapi-hpc-toolkit安裝與使用

成功安裝了 Intel oneAPI HPC Toolkit!這個工具包包含了很多強大的工具,可以幫助你優化和加速高性能計算(HPC)任務,特別是在使用 Intel 的硬件(如 Xeon 處理器和 GPU)時。 接下來,…

QT vscode cmake 編譯 undefined reference to `vtable for 問題解決

編譯時出現undefined reference to vtable for 問題,是沒有添加頭文件到目標,添加即可: 如果使用的是qt5, 沒有qt_add_executable, 使用qt 5的 自動處理即可: # 啟用 Qt 自動處理功能 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC …

linux內核奔潰轉儲之kexec、kdump

一、kexec是什么? kexec 是 Linux 內核提供的一種關鍵技術,允許系統?在不經過完整硬件重啟(BIOS/UEFI 初始化)的情況下,直接從當前正在運行的內核加載并啟動另一個新內核?。以下是其核心要點: ?定義與核…

標題:2025金融護網行動實戰指南:從合規防御到智能免疫的體系化進階

引言 2025年,隨著《中國人民銀行業務領域網絡安全事件報告管理辦法》正式實施,金融護網行動已從“合規檢查”升級為“能力對抗”。面對AI驅動的自適應攻擊、勒索病毒與黑灰產協同威脅,金融機構需構建“技術-管理-人才”三位一體的智能防御體…

NEO4j的安裝部署

windows neo4j新版本安裝需要部署jdk17,下面這個版本是jdk8最新的支持版本 neo4j-community-3.5.9-windows.zipIndex of /doc/neo4j/3.5.9/ 啟動 dos面板中啟動 neo4j.bat console linux neo4j新版本安裝需要部署jdk17,下面這個版本是jdk8最新的支…

八股文——JAVA基礎:說一下C++與java的區別

首先,c與java都是面向對象編程,都包含封裝、繼承、多態的特性。但是c多繼承,而java只能單繼承與多實現。 其次,java無法直接訪問內存,java通過引用對向,比如new一個對象,拿到的對象實例實際上是…

Vue3 Composition API 深度解析:告別Options API的局限性

目錄 一、為什么需要Composition API? 二、核心概念:setup() 函數 三、響應式核心:ref() 和 reactive() 1. ref - 處理基本類型/對象 2. reactive - 處理對象 四、生命周期鉤子新寫法 五、強大的邏輯復用:組合式函數 六、響…

IoT/HCIP實驗-5/基于NB-IoT的智慧農業實驗(平臺側開發+端側編碼+基礎調試分析)

文章目錄 概述擴展板 E53_IA1智慧農業平臺測開發功能定義/模型開發編解碼插件開發-消息編解碼插件開發-關聯編解碼插件開發-部署注冊實際設備 智慧農業端側編碼工程配置數據結構定義數據收集任務數據上報任務設備接入過程正確設置接入參數命令響應任務 程序調試其他 概述 本實…

多網絡環境vmware虛擬機配置

環境:一臺臺式機、一臺筆記本、筆記本中安裝虛擬機。臺式機及筆記本都使用wifi連接。 實現效果:虛擬機采用固定ip方式,臺式機可以直接連接虛擬機。 1、VMware環境配置 臺式機ip:192.168.31.43 筆記本ip:192.168.31.…

ZArchiver×亞矩云手機:云端文件管理的“超維解壓”革命

在數字化辦公與移動應用生態中,文件壓縮與解壓是高頻剛需場景,但傳統本地工具受限于設備性能、存儲空間及跨平臺協作痛點。ZArchiver(輕量級壓縮工具)與亞矩云手機的結合,通過“云端算力虛擬化環境”的創新模式&#x…

微幀WZVQA:極致還原人眼感知,精準評估視頻畫質

隨著移動互聯網的不斷發展以及智能手機的普及,短視頻已逐步取代圖片和文字,躋身主流媒體形式的前列。短視頻平臺的興起,讓數十億用戶可以制作,分享并接收彼此的信息,為人們開辟了一條全新的知識獲取途徑。然而&#xf…

信創 CDC 實戰|國產數據庫的數據高速通道:OceanBase 實時入倉 StarRocks

國產數據庫加速進入核心系統,傳統同步工具卻頻頻“掉鏈子”。本系列文章聚焦 OceanBase、GaussDB、TDSQL、達夢等主流信創數據庫,逐一拆解其日志機制與同步難點,結合 TapData 的實踐經驗,系統講解從 CDC 捕獲到實時入倉&#xff0…

Unity 通過AVProMovieCapture插件實現攝像機錄屏

1.AVProMovieCapture插件下載 沒什么好說的,搞到安裝包之后,直接往項目中拉就行。 2.操作面板配置 (1)在Hierarchy創建一個空物體,上面添加Capture From Camera和Camera Selector兩個插件 (2&#xff09…

深度學習:PyTorch卷積神經網絡分享(1)

本文目錄: 一、CNN概述二、CNN日常應用三、CNN的卷積層(一 )基本介紹(二)卷積層計算1.對輸入數據的要求2.卷積核核心參數3.計算過程4.特征圖尺寸計算5.1、多通道卷積計算5.2、多卷積核計算6.PyTorch卷積層API 前言&…