js高阶——解构赋值

 数组按照索引赋值

对象按照属性名称赋值。

const{a:x,b:y,c:z} = {a:1,b:2,c:3}
//先找到对应的属性名称,再把属性值赋给属性名称。

解构赋值左边和扩展运算符可以一起使用,附加扩展运算符的变量,必须是最后一个。

如果变量前加上了扩展运算符,那么得到的值一定是数组,即使没有对应关系, 也会得到空数组。

const [a,b,...c] = [1,2,3,4,5]// c[3,4,5]
const [a, , , , e] = [1,2,3,4,5]// a[1] e[5]
const [a,b,c] = [1,2,3,4,5]// c[3]
const [a,b,c] = [1,2] //c = undefined
const[{name:a},b] = [
  {name:'张三',age:18}
  {name:'李四',age:20}
 ];//   张三 ,{name:'李四',age:20}
const{a,b} = {a:1,b:2};
const{a:a,b:b} = {a:1,b:2}
const{a:aa,b:bb} = {a:1,b:2}//实际上是给冒号后边的属性生成的值
const{c,f,...n } = {a:1,b:2,c:3,d:4,e:5}
//对象本来就没有顺序

        与数组的解构赋值类似,没有匹配到的变量不会赋值,默认值为未定义,也可以使用扩展运算符,结果是对象。

        ...在对象的解构赋值里,表示除了,对象的属性不区分位置(索引)。

const{a,..c} = {a:1} //a:1  c{}
let obj = {
  p:[
     'Hello',
     {y:'World'}
    ]
 }
        
let{p,p:[x,{y}]} = obj//p:[],x:Hello,y:World

JSON.stringify  对象加数组

       window.JSON.stringify()//将一个json类型的数据转换成字符串

        JSON.parse();//用于将字符串转化为js可以使用的对象+数组的形式

js的字符串本质上讲是对象,但同时带有遍历器接口,因此,js的字符串类型既可以使用数组的解构赋值,也可以使用对象的解构赋值。

const[a,b,c,d,e] = '12345'; //数组的解构赋值给了字符串索引值。

console.log(a)//1

const[a,...b] = '12345';
console.log(a,b)//1,'2345'

const date = [1,2,3];
const[a,b,c] = arr// a1,b2,c3
const{0:a,1:b,2:c,length:d} = [1,2,3]
console.log(a,b,c,d)//1,2,3,3

const{0:a,1:b,2:c,length:d} = [a,b,c,d]
console.log(a,b,c,d)//报错

const { 0: a, 1: b, 2: c, length: d } = ['a', 'b', 'c', 'd']
console.log(a, b, c, d);//a,b,c,4

const { 0: a, 1: b, 2: c, 3: d } = '123'
console.log(a, b, c, d);

const { 0: a, 1: b, 2: c, 3: d } = 'abcd'
console.log(a, b, c, d);//abcd
let x = 1;
let y = 2;
[x,y] = [y,x]


let arr = [5, 4, 2, 6, 7, 3];

for (let i = arr.length - 2; i >= 0; i--) {
   for (let j = 0; j <= i; j++) {
     if (arr[j] > arr[j + 1]) {
       [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
          console.log(arr);
        }
    }
 }

在es6中,函数的参数可以设置默认值:

aa(1, false);
    function aa(a, b = 123) {
      console.log(a, b)
    }

如果有对应的值,则默认值失效,

如果没有传入对应的值,或传入值为undefined,则使用默认值。

函数被调用时的参数获取,也是赋值的过程,一样可以使用解构赋值的规则。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值