js中的解构

所谓解构,就是按照一定模式,从数组和对象中提取值,对变量进行赋值。

1.数组中的解构

以前的赋值

let a = 1;
let b = 2;
let c = 3;

使用解构就可以这样赋值

let [a, b, c] = [1,2,3] 

[1,2,3] 数组中的值会依次的赋值给a,b,c。

如果变量的个数小于数组的元素的个数,无影响。

let [a, b] = [1,2,3]
//a 1 
//b 2 

如果变量的个数大于数组的元素的个数

let [a, b, c, d] = [1,2,3]
//a 1 
//b 2 
//c 3 
//d undefined 

那么没有匹配到元素的变量就没有值,也就是undefined

当然在解构中也可以使用默认值

let [a, b, c = 33, d = 44] = [1,2,3]
//a 1 
//b 2 
//c 3 
//d 44

如果说需要取数组的一部分元素,在解构的时候使用,进行占位,用标识符接收我们真正需要的元素。

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

这里需要注意的是:拓展运算符(也就是…)只能出现在解构语法中的最后。

以下的写法就是错误的

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

2.对象中的解构

对象中的解构需要注意两点:
1.对象的解构所用的变量要和对象的属性名一样才能拿到相应的值。
2.没有顺序要求

let obj = {a: 1, b: 2};
let {x, y} = obj;
//x undefined
//y undefined
let {a, b} = obj;
//a 1
//b 2
let {b, a} = obj;
//b 2
//a 1

在对象的解构中,还能为变量重命名

let obj = {a: 1, b: 2};
let {a: x, b: y} = obj;
//a 报错
//b 报错
//x 1
//y 2

也可以用来获取对象中的部分属性

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

使用已有的变量进行解构

let x, y;
({a: x, b: y} = {a: 1, b: 2, c: 3});
//x 1
//y 2

这里需要注意一个小细节,就是需要用()将代码块包裹住,要不然这里就会报错。因为在js中{ }中的内容被看成一个代码块。

对象的解构同样能够使用默认值

let x, y;
({a: x, b: y, d: z = {num: 1}} = {a: 1, b: 2, c: 3});
//x 1
//y 2
//z {num: 1}
  • 25
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在JavaScript解构赋值是一种方便的语法,可以将数组或对象的成员解构出来并赋值给变量。对于数组解构,可以使用方括号来指定要解构的变量,然后将数组的对应元素赋值给这些变量。例如,如果我们有一个存放了名字和姓氏的数组`arr`,我们可以使用解构赋值将数组的元素赋值给对应的变量。\[2\] 在对象解构,我们可以使用花括号来指定要解构的变量,然后将对象的对应属性值赋值给这些变量。例如,如果我们有一个对象`obj`,其包含`name`和`age`属性,我们可以使用解构赋值将这些属性值赋值给对应的变量。\[1\] 此外,我们还可以将`.entries()`方法与解构语法一同使用,来遍历一个对象的键值对。这个方法返回一个包含对象的键值对的数组,然后我们可以使用解构赋值将键和值分别赋值给对应的变量。\[3\] 希望这个解答对你有帮助! #### 引用[.reference_title] - *1* [解构赋值(数组解构、对象解构)](https://blog.csdn.net/qq_50260510/article/details/129927253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ES6 --- 解构赋值(数组,对象,函数)使用详解](https://blog.csdn.net/m0_52409770/article/details/123096308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值