0%

js | 解构赋值

解构赋值更加优雅。

更加优雅的取值

解构赋值的原则是等号左边和等号右边的对象完全一样。

对象

1
2
3
4
5
6
const cat = {
name: "1",
price: 50,
}
const {name, price} = cat;
console.log(name, price);

数组

之前的写法.

1
2
3
const cat = ["1","2"];
let cat1 = cat[0];
console.log(cat1);

ES6

1
2
3
const cat = ["1","2"];
let [a,b] = cat;
console.log(a);

复杂对象

1
2
3
4
5
6
7
8
9
const cat = {
name: "1",
price: 50,
obj: {
test: "2",
}
}
const {name, price} = cat;
console.log(name, price);

取部分。

1
2
3
4
5
6
7
8
9
const cat = {
name: "1",
price: 50,
obj: {
test: "2",
}
}
const {name, price, obj} = cat;
console.log(name, price, obj);

正常输出。

精细获取。

1
2
3
4
5
6
7
8
9
const cat = {
name: "1",
price: 50,
obj: {
test: "2",
}
}
const {name, price, obj: {test}} = cat;
console.log(name, price, test);

输出正常。

取别名来赋值。

1
2
3
4
5
6
7
8
9
const cat = {
name: "1",
price: 50,
obj: {
name: "2",
}
}
const {name: name1, price, obj: {name}} = cat;
console.log(name1, price, name);

正确使用解构赋值

数组作为参数的解构赋值

之前的写法

1
2
3
4
5
6
7
8
const sum = function (arr) {
let result = 0;
for (let i = 0; i < arr.length; i++) {
result += arr[i];
}
console.log(result)
}
sum([1, 2, 3]);

解构后的写法

1
2
3
4
const sum = ([a, b, c]) => {
console.log(a + b + c);
}
sum([1, 2, 3]);

复杂对象

1
2
3
4
5
6
7
const foo = ({name, age, school = "123"}) => {
console.log(name, age, school);
}
foo({
name: "1",
age: 2,
})
1
2
3
4
5
6
7
const foo = () => {
return {
name: "1"
}
}
let {name} = foo();
console.log(name);

交换

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

json

之前写法

1
2
const json = '{"name":"123","age":23}'
const obj = JSON.parse(json);

解构赋值

1
2
const json = '{"name":"123","age":23}'
const {name,age} = JSON.parse(json);

模拟前后端 json 传递

使用 axios

我们先在项目目录下创建一个 data.json 的文件,作为,后台返回给我们的数据,里面的内容为

1
2
3
4
{
"name": "123",
"age": 2
}

然后,在 html 文件中写

1
2
3
4
5
6
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.0/axios.js"></script>
<script>
axios.get('./data.json').then(function (res) {
console.log(res);
});
</script>

如果运行的话,就能看到输出了。

上述是之前的写法,而现在利用结构赋值

其中,res 里面有 data 等属性

1
2
3
4
5
6
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.0/axios.js"></script>
<script>
axios.get('./data.json').then(({data: {name, age}}) => {
console.log(name, age);
});
</script>
请我喝杯咖啡吧~