es6擴充運算子的用法:1、複製數組,語法「[...數組]」;2、合併數組,語法「[...數組1, ...數組2]」; 3.在數組中加入元素,語法「[...數組, '元素值']」;4、和Math物件一起使用,計算最大值、最小值或總和;5、向函數傳遞無限參數,語法「 const myFunc=(...args)=>{};”;6、將字串轉字元數組,語法“[...字串]”。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
es6中擴充運算子介紹
#擴充運算子 … 是ES6中引入的,將可迭代物件展開到其單獨的元素中,所謂的可迭代對象就是任何能用for of循環進行遍歷的對象,例如:數組(數組常用方法)、字串、Map (悟透Map)、Set (Set 如何使用?)、DOM節點等。
它好比 rest 參數的逆運算,將一個陣列轉為用逗號分隔的參數序列。擴展運算子與正常的函數參數可以結合使用,後面也可以放置表達式,但如果後面是空數組,則不會產生任何效果。
let arr = []; arr.push(...[1,2,3,4,5]); console.log(arr); //[1,2,3,4,5] console.log(1, ...[2, 3, 4], 5) //1 2 3 4 5 console.log(...(1 > 0 ? ['a'] : [])); //a console.log([...[], 1]); //[1]
意義
替代函數的apply方法
由於擴充運算子可以展開數組,所以不再需要apply方法,將數組轉為函數的參數了。
擴充運算子(...
)的10 種用法
1、複製數組
我們可以使用展開運算元複製數組,但要注意的是這是一個淺拷貝。
const arr1 = [1,2,3]; const arr2 = [...arr1]; console.log(arr2); // [ 1, 2, 3 ]
這樣我們就可以複製一個基本的數組,注意,它不適用於多層數組或帶有日期或函數的數組。
2、合併陣列
假設我們有兩個陣列想合併為一個,早期間我們可以使用concat
方法,但現在可以使用展開運算元:
const arr1 = [1,2,3]; const arr2 = [4,5,6]; const arr3 = [...arr1, ...arr2]; console.log(arr3); // [ 1, 2, 3, 4, 5, 6 ]
我們也可以透過不同的排列方式來說明哪一個應該先出現。
const arr3 = [...arr2, ...arr1]; console.log(arr3); [4, 5, 6, 1, 2, 3];
此外,展開運算符號也適用多個陣列的合併:
const output = [...arr1, ...arr2, ...arr3, ...arr4];
3、新增元素##
let arr1 = ['this', 'is', 'an']; arr1 = [...arr1, 'array']; console.log(arr1); // [ 'this', 'is', 'an', 'array' ]
4、新增屬性
假設你有一個user 的對象,但它缺少一個
age屬性。
const user = { firstname: 'Chris', lastname: 'Bongers' };要為這個
user物件新增
age,我們可以再次利用展開運算元。
const output = {...user, age: 31};
5、使用Math() 函數
假設我們有一個數字數組,我們想要得到這些數字中的最大值、最小值或者總和。const arr1 = [1, -1, 0, 5, 3];為了得到最小值,我們可以使用展開運算元和
Math.min 方法。
const arr1 = [1, -1, 0, 5, 3]; const min = Math.min(...arr1); console.log(min); // -1同樣,要獲得最大值,可以這麼做:
const arr1 = [1, -1, 0, 5, 3]; const max = Math.max(...arr1); console.log(max); // 5如大家所見,最大值
5,如果我們刪除
5 ,它將返回
3。
const arr1 = [1, -1, 0, 5, 3]; const max = Math.max(arr1); console.log(max); // NaN這會回傳
NaN,因為JavaScript不知道陣列的最大值是什麼。
6、rest 參數
假設我們有一個函數,它有三個參數。const myFunc(x1, x2, x3) => { console.log(x1); console.log(x2); console.log(x3); }我們可以用以下方式呼叫這個函數:
myFunc(1, 2, 3);但是,如果我們要傳遞一個陣列會發生什麼。
const arr1 = [1, 2, 3];我們可以使用展開運算元將這個陣列擴展到我們的函數中。
myFunc(...arr1); // 1 // 2 // 3這裡,我們將陣列分成三個單獨的參數,然後傳遞給函數。
const myFunc = (x1, x2, x3) => { console.log(x1); console.log(x2); console.log(x3); }; const arr1 = [1, 2, 3]; myFunc(...arr1); // 1 // 2 // 3
7、向函數傳遞無限參數
#假設我們有一個函數,它接受無限個參數,如下:const myFunc = (...args) => { console.log(args); };如果我們現在呼叫這個帶有多個參數的函數,我們會看到下面的情況:
myFunc(1, 'a', new Date());返回:
[ 1, 'a', Date { __proto__: Date {} } ]然後,我們就可以動態地循環遍歷參數。
8、將nodeList 轉換為陣列
#假設我們使用了展開運算子來取得頁面上的所有p:
const el = [...document.querySelectorAll('p')]; console.log(el); // (3) [p, p, p]在這裡可以看到我們從dom中得到了3個
p。
const el = [...document.querySelectorAll('p')]; el.forEach(item => { console.log(item); }); // <p></p> // <p></p> // <p></p>
9、解構變數
#解構物件##假設我們有一個物件
user:<pre class="brush:php;toolbar:false">const user = {
firstname: 'Chris',
lastname: 'Bongers',
age: 31
};</pre>
現在,我們可以使用展開運算子將其分解為單一變數。
const {firstname, ...rest} = user; console.log(firstname); console.log(rest); // 'Chris' // { lastname: 'Bongers', age: 31 }
這裡,我們解構了
user對象,並將firstname
解構為firstname
變量,將物件的其餘部分解構為rest
變數。 <p><strong>解构数组</strong></p><pre class='brush:php;toolbar:false;'>const [currentMonth, ...others] = [7, 8, 9, 10, 11, 12];
console.log(currentMonth); // 7
console.log(others); // [ 8, 9, 10, 11, 12 ]</pre><p><span style="font-size: 18px;"><strong>10、展开字符串(字符串转字符数组)</strong></span></p>
<p>String 也是一个可迭代对象,所以也可以使用扩展运算符 ... 将其转为字符数组,如下:</p>
<pre class="brush:php;toolbar:false">const title = "china";
const charts = [...title];
console.log(charts); // [ 'c', 'h', 'i', 'n', 'a' ]</pre>
<p>进而可以简单进行字符串截取,如下:</p>
<pre class="brush:php;toolbar:false">const title = "china";
const short = [...title];
short.length = 2;
console.log(short.join("")); // ch</pre>
<p><span style="font-size: 18px;"><strong>11、数组去重</strong></span></p>
<p>与 Set 一起使用消除数组的重复项,如下:</p><pre class='brush:php;toolbar:false;'>const arrayNumbers = [1, 5, 9, 3, 5, 7, 10, 4, 5, 2, 5];
console.log(arrayNumbers);
const newNumbers = [...new Set(arrayNumbers)];
console.log(newNumbers); // [ 1, 5, 9, 3, 7, 10, 4, 2 ]</pre><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/image/299/731/678/1665481190710066.png?x-oss-process=image/resize,p_40" class="lazy" title="1665481190710066.png" alt="es6中擴充運算子怎麼用"></p>
<p><strong><span style="font-size: 18px;">12、打印日志</span></strong></p>
<p>在打印可迭代对象的时候,需要打印每一项可以使用扩展符,如下:</p><pre class='brush:php;toolbar:false;'>const years = [2018, 2019, 2020, 2021];
console.log(...years); // 2018 2019 2020 2021</pre><p>【相关推荐:<a href="https://www.php.cn/course/list/1.html" target="_blank" textvalue="web前端开发">web前端开发</a>】</p>
以上是es6中擴充運算子怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React是前端框架,用於構建用戶界面;後端框架用於構建服務器端應用程序。 React提供組件化和高效的UI更新,後端框架提供完整的後端服務解決方案。選擇技術棧時需考慮項目需求、團隊技能和可擴展性。

HTML和React的關係是前端開發的核心,它們共同構建現代Web應用的用戶界面。 1)HTML定義內容結構和語義,React通過組件化構建動態界面。 2)React組件使用JSX語法嵌入HTML,實現智能渲染。 3)組件生命週期管理HTML渲染,根據狀態和屬性動態更新。 4)使用組件優化HTML結構,提高可維護性。 5)性能優化包括避免不必要渲染,使用key屬性,保持組件單一職責。

React是構建交互式前端體驗的首選工具。 1)React通過組件化和虛擬DOM簡化UI開發。 2)組件分為函數組件和類組件,函數組件更簡潔,類組件提供更多生命週期方法。 3)React的工作原理依賴虛擬DOM和調和算法,提高性能。 4)狀態管理使用useState或this.state,生命週期方法如componentDidMount用於特定邏輯。 5)基本用法包括創建組件和管理狀態,高級用法涉及自定義鉤子和性能優化。 6)常見錯誤包括狀態更新不當和性能問題,調試技巧包括使用ReactDevTools和優

React是一個用於構建用戶界面的JavaScript庫,其核心是組件化和狀態管理。 1)通過組件化和狀態管理簡化UI開發。 2)工作原理包括調和和渲染,優化可通過React.memo和useMemo實現。 3)基本用法是創建並渲染組件,高級用法包括使用Hooks和ContextAPI。 4)常見錯誤如狀態更新不當,可使用ReactDevTools調試。 5)性能優化包括使用React.memo、虛擬化列表和CodeSplitting,保持代碼可讀性和可維護性是最佳實踐。

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

React組件可以通過函數或類定義,封裝UI邏輯並通過props接受輸入數據。 1)定義組件:使用函數或類,返回React元素。 2)渲染組件:React調用render方法或執行函數組件。 3)復用組件:通過props傳遞數據,構建複雜UI。組件的生命週期方法允許在不同階段執行邏輯,提升開發效率和代碼可維護性。

React嚴格模式是一種開發工具,可通過激活其他檢查和警告來突出反應應用中的潛在問題。它有助於識別遺產代碼,不安全的生命週期和副作用,鼓勵現代反應實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

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

Dreamweaver Mac版
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器