摘要:對(duì)象的解構(gòu)是利用對(duì)象的屬性名,而數(shù)組的解構(gòu)是利用位置坐標(biāo)的一一對(duì)應(yīng)。本篇我們依然來(lái)看一下數(shù)組解構(gòu)的基本用法一數(shù)組解構(gòu)的使用場(chǎng)景數(shù)組解構(gòu)用于變量聲明后面跟上一對(duì)用中括號(hào)包裹的變量列表,變量的值為對(duì)應(yīng)位置上的素組元素的值。
解構(gòu)不僅可以用于對(duì)象類型,還可以用于數(shù)組。對(duì)象的解構(gòu)是利用對(duì)象的屬性名,而數(shù)組的解構(gòu)是利用位置(坐標(biāo))的一一對(duì)應(yīng)。本篇我們依然來(lái)看一下數(shù)組解構(gòu)的基本用法:
一:數(shù)組解構(gòu)的使用場(chǎng)景
1: 數(shù)組解構(gòu)用于變量聲明
let color = ["red", "green", "blue"]; let [firstColor, secondColor] = color; console.log(firstColor); //red console.log(secondColor); //green
let/const/var 后面跟上一對(duì)用中括號(hào)[]包裹的變量列表,變量的值為對(duì)應(yīng)位置上的素組元素的值。
假如我們不想數(shù)組前面坐標(biāo)的數(shù)據(jù),而是想要中間位置,或者最后位置的,那么前面位置上的每一個(gè)元素留空,用逗號(hào)相隔就行了:
let color = ["red", "green", "blue"]; let [, , thirdColor] = color; console.log(thirdColor); // blue
2: 數(shù)組解構(gòu)用于變量賦值
let color = ["red", "green", "blue"]; firstColor = "white"; secondColor = "black"; [firstColor, secondColor] = color; console.log(firstColor); //red console.log(secondColor); //green
已經(jīng)被初始化了的變量firstColor和secondColor通過(guò)數(shù)組解構(gòu)重新被賦值。數(shù)組解構(gòu)賦值的語(yǔ)法和用于變量聲明很像,只是不再需要let/const/var, 整個(gè)解構(gòu)賦值語(yǔ)句也不需要用()包裹,這一點(diǎn)和對(duì)象的解構(gòu)賦值不一樣。
二:嵌套數(shù)組(多維數(shù)組)的解構(gòu)
前面的例子都是一維數(shù)組,我們來(lái)看看嵌套數(shù)組(多維數(shù)組)的解構(gòu):
let color = ["red", ["white", "black"],"green", "blue"]; let [firstColor, secondColor] = color; let [, [firstChildColor]] = color; console.log(secondColor); //["white", "black"] console.log(firstChildColor); //white
color變量是一個(gè)嵌套數(shù)組,它的第二個(gè)元素又是一個(gè)一維數(shù)組,所以代碼的第二行我們解構(gòu)出secondColor變量,它是一個(gè)一位數(shù)組(倒數(shù)第二行代碼打印結(jié)果)。
而當(dāng)我們?cè)赾olor變量的第二個(gè)元素位置先用一層中括號(hào)包裹一個(gè)變量(這里的firstChildColor),那就說(shuō)明我們解構(gòu)的是"white"這個(gè)值了。其實(shí)這語(yǔ)法大家用邏輯去想就是恨自然而簡(jiǎn)單的。
三:不定元素(剩余元素)
函數(shù)有不定參數(shù),在數(shù)組解構(gòu)這里有個(gè)類似的概念:不定元素(或者叫剩余元素)。它就是用...展開(kāi)運(yùn)算符把數(shù)組的多個(gè)元素一起賦值給一個(gè)變量:
let color = ["red", "green", "blue"]; let [firstColor, ...secondColor] = color; console.log(firstColor); //red console.log(secondColor); //["green", "blue"]
這里需要特別注意的是不定元素變量(剩余元素變量)必須是解構(gòu)的最后一個(gè)變量,其后面不能再有別的變量,否則會(huì)拋出語(yǔ)法錯(cuò)誤,例如:
let color = ["red", "green", "blue"]; let [firstColor, ...secondColor, error] = color; // Uncaught SyntaxError: Rest element must be last element
既然剩余元素可以是數(shù)組的最后幾個(gè)元素,那它當(dāng)然也可以是數(shù)組的全部元素。我們可以利用這點(diǎn)來(lái)實(shí)現(xiàn)數(shù)組的copy:
let color = ["red", "green", "blue"]; let [...copiedColor] = color; console.log(copiedColor);// ["red", "green", "blue"] console.log(color.toString() === copiedColor.toString()); // true console.log(color == copiedColor); // false console.log(color === copiedColor); // fasle
這里也要特別注意,剩余元素變量只是把數(shù)組元素copy到另一個(gè)數(shù)組,所以它們包含的元素相等,但是這2個(gè)數(shù)組是沒(méi)有關(guān)系的,是不相等的。
四:對(duì)象和數(shù)組的混合解構(gòu)
解構(gòu)可以用在對(duì)象和數(shù)組,前面我們所有的例子都是多帶帶的對(duì)象和數(shù)組,接下來(lái)我們來(lái)看看在一個(gè)混合和數(shù)組和對(duì)象的例子:
let node = { personalInfo: { basicInfo: { name: { firstName: "mike", lastName: "deep" }, } }, levelRange: [1, 3] }; let { personalInfo: {basicInfo: {name}}, levelRange: [lowLevel] } = node; console.log(name.firstName); // mike console.log(lowLevel); // 1
其實(shí)混合解構(gòu)和多帶帶的對(duì)象解構(gòu)和數(shù)組解構(gòu)是一樣的,對(duì)象的地方就用對(duì)象解構(gòu)的語(yǔ)法,數(shù)組的地方就用數(shù)組解構(gòu)的語(yǔ)法就對(duì)了。
以上,就是數(shù)組解構(gòu)的所有內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106235.html
摘要:另外對(duì)于已經(jīng)聲明的變量進(jìn)行解構(gòu)賦值時(shí),要非常小心。因此在行首加,將其強(qiáng)制轉(zhuǎn)化為表達(dá)式執(zhí)行。由于和無(wú)法轉(zhuǎn)為對(duì)象,所以對(duì)它們進(jìn)行解構(gòu)賦值,都會(huì)報(bào)錯(cuò)。 let和const let和const是es6新增的兩個(gè)變量聲明關(guān)鍵字,與var的不同點(diǎn)在于: (1)let和const都是塊級(jí)作用域,在{}內(nèi)有效,這點(diǎn)在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。 (2)使用let和con...
摘要:前言前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。對(duì)象的解構(gòu)賦值是根據(jù)對(duì)象值進(jìn)行匹配。前言該篇筆記是第二篇 變量的解構(gòu)賦值。這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。解構(gòu)賦值是對(duì)賦值運(yùn)...
摘要:前言該篇筆記是第二篇變量的解構(gòu)賦值。這一章原文鏈接變量的解構(gòu)賦值解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。對(duì)象的解構(gòu)賦值是根據(jù)對(duì)象值進(jìn)行匹配。 前言該篇筆記是第二篇 變量的解構(gòu)賦值。 這一章原文鏈接: 變量的解構(gòu)賦值解構(gòu)賦值ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)...
摘要:數(shù)組的解構(gòu)賦值特點(diǎn)根據(jù)數(shù)據(jù)的下標(biāo)來(lái)賦值的,有次序。模式能夠匹配起來(lái),如長(zhǎng)度為數(shù)值和布爾值的解構(gòu)賦值解構(gòu)賦值的規(guī)則是只要等號(hào)右邊的值不是對(duì)象或數(shù)組,就先將其轉(zhuǎn)為對(duì)象。布爾值解構(gòu)賦值為字符串的一種。在很多獨(dú)立細(xì)小的方面,解構(gòu)賦值都非常有用。 1、解構(gòu)賦值簡(jiǎn)介 官方解釋:按照一定的模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 舉個(gè)例子,想獲取數(shù)組中...
摘要:解構(gòu),一種黑魔法解構(gòu)是從對(duì)象中提取出更小元素的過(guò)程。賦值是對(duì)解構(gòu)出來(lái)的元素進(jìn)行重新賦值??偨Y(jié)本章講解了對(duì)象解構(gòu)賦值和數(shù)組解構(gòu)賦值,以及對(duì)象和數(shù)組混合情況下的解構(gòu)賦值操作,最后一個(gè)知識(shí)點(diǎn)是解構(gòu)函數(shù)的參數(shù)。 解構(gòu),一種黑魔法 解構(gòu)是從對(duì)象中提取出更小元素的過(guò)程。賦值是對(duì)解構(gòu)出來(lái)的元素進(jìn)行重新賦值。 下面的代碼你可能無(wú)法在瀏覽器上實(shí)時(shí)測(cè)試,推薦在babel官網(wǎng)在線測(cè)試代碼:在線測(cè)試ES6代碼...
閱讀 2976·2021-10-15 09:41
閱讀 1634·2021-09-22 15:56
閱讀 2110·2021-08-10 09:43
閱讀 3283·2019-08-30 13:56
閱讀 1789·2019-08-30 12:47
閱讀 659·2019-08-30 11:17
閱讀 2777·2019-08-30 11:09
閱讀 2199·2019-08-29 16:19