es6的解构赋值

Posted on 2020-10-01 23:00  猫头唔食鱼  阅读(247)  评论(0编辑  收藏  举报

1.数组的解构赋值

  // 数组解构赋值
        let arr = ['hello','world']
        let [a,b] = arr
        console.log(a); // hello
        console.log(b); // world
 // 只取部分值
         let arr = [1,2,3,4]
         let [a,,c] = arr 
         console.log(a);// 1
         console.log(c); // 3

2.对象的解构赋值

// 对象解构赋值
        let Obj = {
            a:1,b:2
        }
        let {a,b} = Obj
        console.log(a); // 1
        console.log(b); // 2
   
// 只取部分值
         let Obj = {
             a:1,b:2,c:3,d:4
         }
         let {a,c} = Obj
         console.log(a);
         console.log(c);
 

利用解构赋值给对象重新赋值

 // 利用解构赋值给对象属性重新赋值
             let user = {name:'zs',age:'12'}; // 这行必须加分号
             [user.name,user.age] = ['ls','13']
             console.log(user);

 

3.字符串解构赋值

 // 字符串解构赋值 
         let str = 'abcd'
         let [a,b] = str
         console.log(a); // a
         console.log(b); // b
   // 只取部分值
         let str = 'abcd'
         let [a,,c] = str
         console.log(a); // a
         console.log(c); // c

4.set集合的解构赋值

 // set集合的解构赋值
         let set = new Set(['a','b'])
         let [a,b] = set 
         console.log(a);
         console.log(b);
// 只取部分值
         let set = new Set([1,2,3,4])
         let [a,,c] = set
         console.log(a); // a 
         console.log(c); // c

5.对元素较多的数组进行解构赋值,只取有用的值

 let arr = [1,2,3,4,5,6,7,8,9,20]
         let [a,b,...v] = arr 
            console.log(a);// 1
            console.log(b); // 2
            console.log(v); // [3,4,5,6,7,8,9,20]

6.只取对象中有用的属性

  let obj = {
             name:'zs',age:12,addr:'gz'
         }
         let {name,...v} = obj 
         console.log(name); // zs
         console.log(v); // {age:12,addr:'gz'}

7.复杂数据的解构赋值

 // 复杂数据解构的解构赋值
         let options = {
             size:{
                 width:100,
                 height:200
             },
             extra:true ,
             users:['zs','ls']
         }

         let {size:{width},users:[,item]} = options
         console.log(width); // 100
         console.log(item); // ls

 8.嵌套对象的解构赋值

let obj = {
                 a:{
                     b:{
                         c:{
                             d:'e'
                         }
                     }
                 }
             }
             let {a:{b:{c:{d}}}} = obj 
             console.log(d); // e 

 

9.需要注意的地方:

let obj = {name:'zs',age:12}
let {name,age,addr='gz'} = obj
console.log(addr) // gz  
console.log(obj) // {name:'zs',age:12}  没有addr属性

 

10.截取数组的技巧

之前都是用splice截取数组的,例如,只想要数组后面两项:

let arr = [1,2,3,4]
arr.splice(2) // [3,4]

现在可以用结构达到这个目的:

let arr = [1,2,3,4]
let [,,...v] = arr
console.log([...v]) // [3,4]