一文詳解 JavaScript 中展開運算子的不同使用方式
這篇文章帶大家了解 JavaScript 中使用擴充運算子的不同方式,以及擴充運算子和剩餘運算子之間的主要差異,希望對大家有所幫助!
由三個點 ( ...
) 表示,JavaScript 擴充運算子是在 ES6 中引入的。它可用於將集合和數組中的元素擴展為單一單獨的元素。
擴充運算子可用於建立和複製陣列和物件、將陣列作為函數參數傳遞、從陣列中刪除重複項等等。
語法
擴充運算子只能用於可迭代物件。它必須在可迭代物件之前使用,沒有任何分隔。例如:
console.log(...arr);
功能以及參數
以Math.min()方法為例。此方法接受至少一個數字作為參數,並傳回傳遞的參數中最小的數字。
如果您有一個數字數組並且您想找到這些數字中的最小值,那麼在沒有展開運算符的情況下,您需要使用它們的索引一個一個地傳遞元素,或者使用apply()方法來傳遞數組作為參數。例如:
const numbers = [15, 13, 100, 20]; const minNumber = Math.min.apply(null, numbers); console.log(minNumber); // 13
請注意,第一個參數是null
,因為第一個參數用來更改this
呼叫函數的值。
擴充運算子是將陣列元素作為參數傳遞給函數的更方便和可讀的解決方案。例如:
const numbers = [15, 13, 100, 20]; const minNumber = Math.min(...numbers); console.log(numbers); // 13
建立陣列
擴充運算子可用於從現有陣列或其他包含Symbol.iterator()方法的可迭代物件建立新陣列。這些是可以使用for...of
循環迭代的物件。
例如,它可用於複製陣列。如果您只是將現有數組的值分配給新數組,則對新數組進行更改將更新現有數組:
const numbers = [15, 13, 100, 20]; const clonedNumbers = numbers; clonedNumbers.push(24); console.log(clonedNumbers); // [15, 13, 100, 20, 24] console.log(numbers); // [15, 13, 100, 20, 24]
透過使用擴充運算符,可以將現有數組克隆到一個新數組中,並且對新數組所做的任何更改都不會影響現有數組:
const numbers = [15, 13, 100, 20]; const clonedNumbers = [...numbers]; clonedNumbers.push(24); console.log(clonedNumbers); // [15, 13, 100, 20, 24] console.log(numbers); // [15, 13, 100, 20]
應該注意的是,這只會克隆一維數組。它不適用於多維數組。
擴充運算子也可用於將多個陣列連接為一個。例如:
const evenNumbers = [2, 4, 6, 8]; const oddNumbers = [1, 3, 5, 7]; const allNumbers = [...evenNumbers, ...oddNumbers]; console.log(...allNumbers); //[2, 4, 6, 8, 1, 3, 5, 7]
您也可以在字串上使用擴充運算子來建立一個數組,其中每個項目都是字串中的一個字元:
const str = 'Hello, World!'; const strArr = [...str]; console.log(strArr); // ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']
#建立對象
擴充運算子可以以不同的方式用於建立物件。
它可用於淺克隆另一個物件。例如:
const obj = { name: 'Mark', age: 20}; const clonedObj = { ...obj }; console.log(clonedObj); // {name: 'Mark', age: 20}
它還可以用於將多個物件合併為一個。例如:
const obj1 = { name: 'Mark', age: 20}; const obj2 = { occupation: 'Student' }; const clonedObj = { ...obj1, ...obj2 }; console.log(clonedObj); // {name: 'Mark', age: 20, occupation: 'Student'}
需要注意的是,如果物件共用相同的屬性名稱,將使用最後一個物件展開的值。例如:
const obj1 = { name: 'Mark', age: 20}; const obj2 = { age: 30 }; const clonedObj = { ...obj1, ...obj2 }; console.log(clonedObj); // {name: 'Mark', age: 30}
擴充運算子可用於從數組建立對象,其中數組中的索引成為屬性,該索引處的值成為屬性的值。例如:
const numbers = [15, 13, 100, 20]; const obj = { ...numbers }; console.log(obj); // {0: 15, 1: 13, 2: 100, 3: 20}
它也可以用於從字串建立對象,其中,字串中的索引成為屬性,該索引處的字元成為屬性的值。例如:
const str = 'Hello, World!'; const obj = { ...str }; console.log(obj); // {0: 'H', 1: 'e', 2: 'l', 3: 'l', 4: 'o', 5: ',', 6: ' ', 7: 'W', 8: 'o', 9: 'r', 10: 'l', 11: 'd', 12: '!'}
將 NodeList 轉換為陣列
#NodeList是節點的集合,它們是文件中的元素。元素透過集合中的方法訪問,例如item
or entries
,與陣列不同。
您可以使用擴充運算子將 NodeList 轉換為 Array。例如:
const nodeList = document.querySelectorAll('div'); console.log(nodeList.item(0)); // <div>...</div> const nodeArray = [...nodeList]; console.log(nodeList[0]); // <div>...</div>
從陣列中刪除重複項
Set物件是一個只儲存唯一值的集合。與 NodeList 類似,可以使用擴充運算子將 Set 轉換為陣列。
由於 Set 僅儲存唯一值,因此可以將其與擴充運算子配對以從陣列中刪除重複項。例如:
const duplicatesArr = [1, 2, 3, 2, 1, 3]; const uniqueArr = [...new Set(duplicatesArr)]; console.log(duplicatesArr); // [1, 2, 3, 2, 1, 3] console.log(uniqueArr); // [1, 2, 3]
擴充運算子與休息運算子
rest 運算子也是一個三點運算子( ...
),但它用於不同的目的。 rest 運算子可以在函數的參數清單中使用,表示該函數接受未定義數量的參數。這些參數可以當作數組處理。
例如:
function calculateSum(...funcArgs) { let sum = 0; for (const arg of funcArgs) { sum += arg; } return sum; }
在此範例中,rest 運算子用作calculateSum
函數的參數。然後,您循環遍歷數組中的項目並將它們相加以計算它們的總和。
然後,您可以將變數一個一個地calculateSum
作為參數傳遞給函數,或使用擴充運算子將陣列的元素作為參數傳遞:
console.log(calculateSum(1, 2, 3)); // 6 const numbers = [1, 2, 3]; console.log(calculateSum(...numbers)); // 6
#結論
擴充運算子可讓您用更少的程式碼行做更多的事情,同時保持程式碼的可讀性。它可以用於可迭代物件以將參數傳遞給函數,或從其他可迭代物件建立陣列和物件。
【相關推薦:javascript影片教學、程式設計基礎影片】
#以上是一文詳解 JavaScript 中展開運算子的不同使用方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
