>[success] # 数组解构 ~~~ 1.数组解构的语法形式是在一个赋值操作符左边放置一个对象字面量 ~~~ >[danger] ##### 给未定义的变量赋值 * 取出数组中的每一项 ~~~ let numList = [17,18,19] // 赋值给定义的变量 let [first,second,third] = numList console.log(first) // 17 console.log(second) // 18 console.log(third) // 19 ~~~ * 取出数组中的指定项 ~~~ 1.如果需要取出某一项,可以领用'逗号占位' 2.解构赋值的时候右侧不能是'null' 和 'undefind' ~~~ ~~~ let numList = [17,18,19] // 赋值给定义的变量 let [,,third] = numList console.log(third) // 19 ~~~ * 取出第一项利用取出数组指定项的方法 ~~~ let numList = [17,18,19] // 赋值给定义的变量 let [first] = numList console.log(first ) // 19 // 取出字符串第一项 let Name = 'wang' let [beginString] = Name console.log(beginString) // w ~~~ >[danger] ##### 像python 一样不用借用中间项,交互两个值 ~~~ let x = 1; let y = 2; // 注意这里要有分号,可以在中括号前面加,也可以在最后一个变量也就是这里的y加 [x, y] = [y, x]; console.log(x) // 2 console.log(y) // 1 ~~~ >[danger] ##### 设置默认值 ~~~ let numList = [1] // numList 不存在二项,如果不设置默认值解构赋值的时候取 // 第二项是undefined,下面代码设置了默认值所以是 2 let [first, second = 2] = numList console.log(first) // 1 console.log(second) // 2 ~~~ >[danger] ##### 嵌套数组结构 ~~~ let colors = ['red',['green','lightgreen'],'blue'] let [firstColor,[secondColor] ] = colors console.log(firstColor) // red console.log(secondColor) // green ~~~ >[danger] ##### 不定元素(挺重要用的场合比较多) ~~~ 1.注意展开运算符的数据必须放在最后且后面不能加逗号 ~~~ ~~~ let colors = ['red','green','blue'] // ... 展开运算符会将其他像变成数组 let [firstColor,...restColors] = colors console.log(firstColor) // red console.log(restColors) // ['green','blue'] ~~~ * 浅copy 数组 ~~~ let colors = ['red','green','blue'] // ... 展开运算符会将其他像变成数组 let [...restColors] = colors console.log(restColors) // ['red','green','blue'] ~~~ >[danger] ##### 结构开发时候便捷 ~~~ const path = '/foo/bar/baz' // const tmp = path.split('/') // const rootdir = tmp[1] const [, rootdir] = path.split('/') console.log(rootdir) ~~~