探索 ECMAScript 2023 中的新數組方法

来源:https://www.cnblogs.com/pglin/archive/2023/12/18/17911900.html
-Advertisement-
Play Games

前言 ECMAScript 2023 引入了一些新功能,以改進語言並使其更加強大和無縫。這個新版本帶來了令人興奮的功能和新的 JavaScript 數組方法,使使用 JavaScript 編程更加愉快和輕鬆。本文將帶領讀者全面瞭解數組原型上新 JavaScript 方法。 什麼是ECMAScript ...


前言

ECMAScript 2023 引入了一些新功能,以改進語言並使其更加強大和無縫。這個新版本帶來了令人興奮的功能和新的 JavaScript 數組方法,使使用 JavaScript 編程更加愉快和輕鬆。本文將帶領讀者全面瞭解數組原型上新 JavaScript 方法。

什麼是ECMAScript?

ECMAScript 是一種標準化的腳本語言,它是 JavaScript 的規範。ECMAScript 2023 是 JavaScript 編程語言的更新,旨在帶來改進並使 JavaScript 程式可預測和可維護。

ECMAScript 2023 引入的新方法

toReversed()

toReversed()reverse() 類似。 toReversed() 方法以相反的順序返回數組的元素,而不更改原始數組。(請註意,ECMAScript 2023 代碼片段中的新 JavaScript 方法在現代 Web 瀏覽器上運行。從 MDN 檢查瀏覽器功能。它適用於瀏覽器,因為方法仍然很新。此外,Node.js 不支持這些方法。Node.js 版本 20+ 支持它們。這不利於開發人員,因為開發人員使用 Node.js LTS 版本(版本 18)。)

eg:讓我們看一下按時間順序排列的一周中幾天的列表。結果將以相反的順序顯示。

//This is the original array
const days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];

//Using reverse()
const reverseDays=days.reverse();
console.log(reverseDays);
//Output: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']

console.log(days);
//Output of original array is changed: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday'

使用該 reverse() 方法修改原始數組。

eg: toReversed() 方法在不更改原始數組的情況下反轉數組。看看這個例子:


//Using toReversed() method
const reversedDays=days.toReversed();
console.log(reversedDays);

//Output: ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']

console.log(days);
//Output of original array is not changed: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

toReversed() 功能是開發人員欣賞的一項顯著功能。這是因為原始數組是用該 reverse() 方法變異的。感謝 ECMAScript 2023 引入該 toReversed() 方法。使用此方法,您可以更改數組的副本,而不是原始數組。

toSorted()

toSorted() 類似於 JavaScriptsort() 方法。但兩種方法彼此不同,是的!你猜對了。與 sort() 不同,toSorted() 方法不會更改原始數組。 toReversed() 方法返回一個新數組,使原始數組保持不變。

eg: 考慮這種情況,我們需要按升序對數字進行排序。此示例將說明 和 toSorted() 之間的區別。

//This is the original array
const numbers=[9, 4, 8, 1, 6, 3];

//Using sort
const sortNumbers=numbers.sort();
console.log(sortNumbers);
// Output:[1, 3, 4, 6, 8, 9]

console.log(numbers)//original array
//Output:[1, 3, 4, 6, 8, 9]

//Using toSorted
const sortNumbers=numbers.toSorted();
console.log(sortNumbers);
// Output:[1, 3, 4, 6, 8, 9]

console.log(numbers)//original array
//Output:[9, 4, 8, 1, 6, 3]
//Original array is not mutated

toSorted() 方法修改上述實例中的複製版本。它返回一個新數組,其中元素按升序排序。但是,原始數組不會更改。另一方面, sort() 方法將原始數組就地改變,如上面的示例所示。

toSpliced()

toSpliced() 數組方法是 ECMAScript 2023 中的一項新功能。類似於 JavaScriptsplice() 數組方法,但略有不同。兩種數組方法的區別在於 toSpliced() 不會修改原來的數組。toSpliced() 創建一個包含已更改元素的新數組,但原始數組保持不變。 toSpliced() 可以在一個數組中執行多項操作。您可以添加、刪除和替換數組中的元素。

eg: 讓我們考慮一個場景,我們有一個元素列表,並希望在不更改原始數組的情況下刪除一些元素。此示例將說明 和 toSpliced 之間的區別 splice() 。

//Original array
const fruits=['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples'];

//Using Splice
const spliceFruits= fruits.splice(2,1);//removing one fruit(Bananas)
console.log(spliceFruits);
//Output: ['Grapes', 'Oranges', 'Mangoes', 'Pineapples']

console.log(fruits);//original array is altered
//Output: ['Grapes', 'Oranges', 'Mangoes', 'Pineapples']

//Using toSpliced
const splicedFruits= fruits.toSpliced(4,1);//removing one fruit(Pineapples)
console.log(splicedFruits);
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes']

console.log(fruits);//original array remain unmodified
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']

// Adding an element at index 1
const fruits2 = fruits.toSpliced(1, 0, "Passion");
console.log(fruits2); 
//Output: ['Grapes', 'Passion', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']

// Replacing one element at index 1 with two new elements
const fruits3 = fruits2.toSpliced(1, 1, "Guava", "Melon");
console.log(fruits3); 
//Output: ['Grapes', 'Guava', 'Melon', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']

//Original array remain unchanged
console.log(fruits)
//Output: ['Grapes', 'Oranges', 'Bananas', 'Mangoes', 'Pineapples']

toSpliced() 數組方法是 JavaScript 語言的一個重要附加功能。它允許開發人員在不更改原始數組的情況下操作數組。這使開發人員能夠輕鬆管理和維護代碼。如上面的示例所示,此方法提供了一種更方便的方法來添加、刪除或替換任何數組索引處的元素。

with()

with() 數組方法在引入 ECMAScript 2021 (ES12) 時被添加到 JavaScript 編程語言中。更新數組中的元素在 JavaScript 中很常見。但是,更改數組元素會修改初始數組。with() 數組方法在 ECMAScript 2023 中引入了一項新功能。該 with() 方法提供了一種在不更改原始數組的情況下更新數組中元素的安全方法。

eg: 這是通過返回一個包含更新元素的新數組來實現的。

const flowers=['Lily', 'Daisy', 'Iris', 'Lotus', 'Allium'];

//old way of updating an array;
flowers [4]='Rose';
console.log(flowers);
//Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Rose']

//New way of updating an array using with()
const updatedFlowers=flowers.with(4, 'Aster');
console.log(updatedFlowers);
//Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Aster']

console.log(flowers);//original array
Output: ['Lily', 'Daisy', 'Iris', 'Lotus', 'Allium']

更新數組的舊方法使用括弧表示法來更改數組中的元素。使用括弧表示法更新數組,將修改原始數組。但是,該 with() 方法在更新特定數組索引中的元素後會獲得相同的結果,但不會改變原始數組。您可以創建數組的副本,該副本將返回一個具有更新索引的新數組。

總結

ECMAScript 不斷進步,因為它每年都會推出新版本。這是自2015年以來一直存在的趨勢。這種轉變每年都在發生,以改進 ECMAScriptJavaScriptECMAScript 2023 為 JavaScript 語言帶來了幾個令人興奮的功能。這些功能改進了語言功能和開發人員體驗。

使用這些上述數組方法,開發人員可以接受數組數據的不可變性,因為他們可以確保原始數組保持不變。它們將增強開發人員在使用數組時的工作。保持數據不變是有利的,正如 ECMAScript 2023 中的這些數組方法所證明的那樣。這些好處適用於任何 JavaScript 對象,而不僅僅是數組。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL提供了多種方法來鎖定解鎖賬號,下麵是幾種常用的方法: 1.使用ALTER語句鎖定賬號 鎖定賬號: ALTER USER 'username'@'localhost' ACCOUNT LOCK; 解鎖賬號: ALTER USER'username'@'localhost' ACCOUNT U ...
  • 本文分享自華為雲社區《你的JoinHint為什麼不生效【綻放吧!GaussDB(DWS)雲原生數倉】》,作者:你是猴子請來的救兵嗎 。 引言 提起資料庫的Hint,幾乎每個DBA都知道這一強大功能。在GaussDB(DWS)中,Hint可以被用來干預SQL的執行計劃,但是在日常工作中,很多開發人員對 ...
  • 夜黑風高的某一晚,突然收到一條運營後臺資料庫慢sql的報警,耗時竟然達到了60s。看了一下,還好不是很頻繁,內心會更加從容排查問題,應該是特定條件下沒有走到索引導致,如果頻繁出現慢查詢,可能會將資料庫連接池打滿,導致資料庫不可用,從而導致應用不可用。 ...
  • 最近開始體驗FastGPT開源知識庫問答系統,用他們試著開發調試一些小助手。這中間需要使用到MongoDB,就在自己伺服器上進行了安裝,特此記錄下。 環境說明:阿裡雲ECS,2核8G,X86架構,CentOS 7.9操作系統。 選擇版本 1.打開MongoDB社區版下載頁面,選擇我們想要安裝的版本、 ...
  • 直接加減數字 select sysdate 當前時間, sysdate + 1 加一天, sysdate - 1 減一天, sysdate + (1 / 24) 加一小時, sysdate + (1 / 24 / 60) 加一分鐘 from dual; 使用add_months()函數 select ...
  • 一、垂直分庫場景 場景:在業務系統中,涉及一下表結構,但是由於用戶與訂單每天都會產生大量的數據,單台伺服器的數據存儲以及處理能力是有限的,可以對資料庫表進行拆分,原有資料庫如下 說明1:整個業務系統中的表,大致分為四個,商品信息類的表,訂單相關的表,用戶相關表及省市區相關的表,這裡暫時將省市區的表和 ...
  • 成功之前我們要做應該做的事情,成功之後我們才可以做喜歡做的事情。 1. 處理器架構 CPU 架構是 CPU 廠商給屬於同一系列的 CPU 產品定的一個規範,主要目的是為了區分不同類型 CPU 的重要標示。市面上的 CPU 分類主要分有兩大陣營,一個是 intel、AMD 為首的 複雜指令集 CPU, ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 太長不看 不要嵌套使用函數。給每個函數命名並把他們放在你代碼的頂層 利用函數提升。先使用後聲明。 處理每一個異常 編寫可以復用的函數,並把他們封裝成一個模塊 什麼是“回調地獄”? 非同步Javascript代碼,或者說使用callback的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...