es6的数值解构赋值
1.es6 允许使用一定的方式从数组或者对象中提取数值,从而对于同样模式的变量进行赋值操作,代码如下:
1 | let [a,b,c] = [1,2,3] |
1 | let [a] = {}; |
2.使用结构变量可以初始数组
1 | let [a,...b] = [1,2,3,4]; |
3.可以在解构赋值的时候使用默认值操作
1 | let [x = 1] = []; |
1 | let [x = 1, y = x] = []; |
=== 全等操作, 因此1 | let [a = 1] = [null] |
es6 中对于对象的解构赋值操作
代码如下:1 | let person = { |
1 | let {name: name, home: home} = person; |
1 | let {name: perName, home: perHome} = person; |
name 用于进行模式匹配,在 person 中找到 name 之后,将 name 的值赋给 perName使用对象的形式解构也可以赋予默认值:当在等号右边的对象中找不到对应的属性的时候, 会使用括号内被默认赋予的值1 | let {x = 1, y = 5} = {x: 2} |
es6 中对于字符串的解构赋值
当对于字符串进行解构赋值操作的时候,字符串会被转换为类似数组的对象:这意味着我们可以通过使用数组或者对象的方式进行解构:1 | let [a,b,c,d,e] = 'hello'; |
1 | let {length} = 'hello'; |
函数参数的解构
1.数组形式进行解构1 | function move([x,y]) { |
1 | function person({name, home}) { |
1 | function person ({name = '张宁宁', home = 'china'} = {}) { |
使用参数解构中的小技巧
- 提取函数的返回值:
1
2
3
4
5
6function bar () {
return [1, 2]
}
let [a, b] = bar ();
a // 1
b // 2 - 应用解构分离对象的键值对
1
2
3
4
5
6
7
8
9
10
11
12
13let arrObj = [{}, {}, {}];
// 取得数组对象中值对应的键
function getKey( arrobj, objValue) {
for (const obj of arrobj) {
// 使用 {} 实现对象的解构赋值
let {key, value} = obj;
if (value === objValue) {
return key;
}
}
}
getKey(arrObj, 'someObjValue')