1. 程式人生 > >es6陣列賦值

es6陣列賦值

1.陣列的解構賦值

//以前給變數賦值 let a=1,b=2,c=3 //在es6裡 可以這樣    // let [a,b,c]=[1,2,3]    // console.log(a,b,c) let ary=['a','b'] // let [a,b,c]=ary // console.log(a,b,c)// a b undefined

let arr=['aa','bb','cc','dd'] let [a,b,c]=arr console.log(a,b,c)

2.巢狀賦值

//巢狀陣列,其實是給對應的變數付得值 let [x,y,[s],[[f
]]]=[1,2,[3],[[4]]] console.log(x,y,s,f)

3.省略賦值

let ary=[1,2,3,4,5,6]//定義一個數組ary let a=ary[0]//定義一個變數a,儲存的是ary中的第一個值 let b=ary[ary.length-1]//定義一個變數b,儲存的是ary中的第一個值

//es6的寫法:x取到ary中的第1項,y是ary的第5項 let [x,,,,y]=ary console.log(x,y)//1,5

4.不定引數的賦值

//比如現在有個陣列【1,2,3,4,5】 現在我想讓a=1 b=[2,3,4,5] let
[a,...b]=[1,2,3,4,5] console.log(a,b)//1 ,[2,3,4,5]

//這就是不定引數賦值 let [,,x,,...y]=[1,2,3,4,5,6,7,8,9] console.log(x,y)//3 ,[5,6,7,8,9]

5.預設值

let [f0,f1]=[1] console.log(f0,f1)//1 ,undefined 現在f1沒值 所以是undefined,
let [f2,f3=2]=[1] console.log(f2,f3)//1 ,2 如果後邊有值 就取後邊的值 ,如果沒有 就取2 相當於是預設值
//es6裡邊的運算是嚴格運算的,判斷一個位置是否有值, 是用的===判斷,
//如果陣列中成員不嚴格等於undefined ,預設值不會生效 let [f=1]=[2] //null console.log(f)//2 //null
function fn() { console.log("haha") } let [x=fn(),y=0]=[1] console.log(x,y)//1 ,0 //所以說只要變數在陣列中的位置不是undefined,fn函式就不會執行

針對es6中...的用法總結:

用法1:展開運算子(spread operator),作用是和字面意思一樣,就是把東西展開。可以用在arrayobject上都行,比如

let a = [1,2,3];
let b = [0, ...a, 4]; // [0,1,2,3,4]

let obj = { a: 1, b: 2 };
let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 }
let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }

用法2:剩餘操作符(rest operator),是解構的一種,意思就是把剩餘的東西放到一個array裡面賦值給它。一般只針對array的解構

let a = [1,2,3];
let [b, ...c] = a;
b; // 1
c; // [2,3]

// 也可以
let a = [1,2,3];
let [b, ...[c,d,e]] = a;
b; // 1
c; // 2
d; // 3
e; // undefined

// 也可以
function test(a, ...rest){
  console.log(a); // 1
  console.log(rest); // [2,3]
}

test(1,2,3)