数组解构赋值

Posted zlsqd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组解构赋值相关的知识,希望对你有一定的参考价值。

可以同时定义多个变量,值来源于已有的数组

//1. 定义的变量===数组的项数

let [a,b,c]=[1,2,3];//等同于let a=1,b=2,c=3;  
//2. 定义的变量>数组的项数
let [a,b,c]=[1,2];//a=1,b=2,c=undefined  定义的变量没有对应的值就是只声明未定义,值是undefined
//3. 定义的变量<数组的项数
let [a,b]=[1,2,3];//a=1,b=2        多出来的值没有变量接收,没事
 
- 右侧不直接是值,是一项数组。左侧想直接拿到右侧数组里的值,可以通过对应格式拿到值
  - 左侧的变量虽然是在数组里但是我们拿的时候还是单独的变量
let [a,[b]]=[1,[2]];
console.log(a,b);//相当于a=1,b=2

- 省略赋值 

let [a,,,b]=[1,2,3,4,5];
console.log(a,b);//a拿到右侧数组的第一项1,b拿到右侧数组的第四项4。中间不需要赋值和最后一项不需要赋值可以省略不写
              //也可以这样获取a和b的值,var a=ary[0]   

- 左侧某个变量可以获取右边数组多个值(不固定)

let [,a,,...b]=[1,2,3,4,5];
    console.log(a,b);//第一个空位对应右侧1,a对应2,第三个空位对应3,...b取值为剩下的4,5
                      //a=2,b=[4,5]

- 左侧可以给默认值,当右侧是undefined或没有左侧对应的值时,左侧就会用默认值

//判断一个位置是否有值用===,右侧数组中当前像是undefined或没值时默认值生效,否则默认值不生效用右侧数组的值
    let [a=0,b=1,c=2]=[1,undefined];
    console.log(a,b,c);//a=1,b=1用默认值,c=2用默认值

 



以上是关于数组解构赋值的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript]解构赋值详解

JS解构赋值

ES6解构赋值 (数组 , 对象)

数组解构

ES6学习-4 解构赋值数组的解构赋值

3. 变量的解构赋值