let a = 'b';
let b = 'a';
[a,b] = [b,a];
console.log(a,b);
image.png
let num1 = 30;
let num2 = 10;
let num3 = 40;
let num4 = 20;
[num1,num2,num3,num4] = [num2,num4,num1,num3]
console.log(`第一:${num1},第二:${num2},第三:${num3},第四:${num4}`)
image.png
const arr = ['a','b','c','d','e','f','g','h'];
const [num1,num2,num3] = arr;
//自动创建三个变量并且分别给他们进行赋值,按照数组里的位置进行取值
console.log(`第一名:${num1},第一名:${num2},第一名:${num3})`
//输出为:第一名:a,第二名:b,第三名:c
//取里面指定位置的元素
const arr = ['蛋同学','鸡同学','鸭同学','饿同学','牛同学','杨同学'];
const [, ,num3, , num5] = arr;
console.log(`第三名:${num3},第五名: ${num5}`);
//输出为第三名:鸭同学,第五名: 牛同学
如果要进行解构赋值的那个变量名已经存在了,但是可以进行变量值的改写,解构赋值不一定用于新创建变量,还可以用于修改变量
const arr = ['1同学','2同学','3同学','4同学','5同学','6同学'];
let num3 = '九九';
let num5 ='汪汪'
//当数组里某个位置可能根本不存在,直接在指定位置赋值的方式把值添上就可以了
[, ,num3, , num5,num7 = '7同学'] = arr;
console.log(`第三名:${num3},第五名: ${num5},第七名:${7同学}`);
//输出:第三名:3同学,第五名:5同学
const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
const {2: num3,4:num5} = arr;
console.log(`第三名:${num3},第五名:${num5}`);
//输出:第三名:3同学,第五名:5同学
const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
const [notExist = '数组为空'] = arr;
console.log(notExist);
//输出为1同学
这里如果数组为空就会自动显示“数组为空”,数组不为空就会直接替换掉默认值
const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
const [num1,num2,num3,...restNum] = arr;
console.log(`前三名是:${num1},${num2},${num3},不及格的是${restNum}`);
//输出为1同学,2同学,3同学,不及格的是4同学,5同学,6同学,7同学
//除了逐个指定进行赋值以外,如果有剩余的数组元素都需要保存起来,就可用三个点来表示剩余的不定元素都汇集在一个数组里面
//注意不可以先把不定元素放前面,又在后面逐个赋值
const arr = ["1同学","2同学","3同学"];
const [...copyArry] = arr;
console.log(copyArr);
//输出: ["1同学","2同学","3同学"];
//嵌套数组解构
const arr = ['1同学','2同学',['3同学','4同学'],['5同学','6同学','7同学'],'8同学'];
const [num1, ,[, num2],[, , num3]] = arr;
console.log(`第1个数组的第1个元素:${num1},第2个数组的第2个元素:${num2},第3个数组的第3个元素:${num3}`);
//输出:第1个数组的第1个元素:1同学,第2个数组的第2个元素4同学,第3个数组的第3个元素:7同学
对象的解构赋值
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
const { name_,email} =obj;
console.log(nmae_,email);
//老师,256656@qq.com
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
const { name:Tname,email:Temail} =obj;
console.log(Tname,Temail);
//老师,256656@qq.com
//如果要获取的属性名字早就存在数组里了,就不需要去逐个输入相应的属性名。可以通过调用数组元素来获取相应的属性名,
//要给属性名加中括号,因为这里涉及到计算
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
const arr = ['name','email'];
const {[arr[0]]: Tname,[arr[1]]:Temail} = obj;
console.log(Tname,Temail);
//老师,256656@qq.com
//如果获取对象的属性可能根本就不存在,可以使用等号来进行默认赋值
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
const {name:Tname,email:Temail.major:Tmajor='计算机'} = obj;
console.log(Tname,Tname,Tmajor);
//老师 256656@qq.com 计算机
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
const {id,age,..restObj}= obj;
console.log(restObj);
//输出:{name:'老师',gender:'男',email:'256656@qq.com'}
const obj = {
id:'1',
name:'老师',
age:18,
gender:'男',
email:'256656@qq.com'
}
let gender = '女';
({gender} = obj);
console.log(gender);
//输出:男
//如果已经声明的变量,也可以用解构赋值的方式来覆盖原来的变量值
const obj = {
id:'1',
skills: {
cook: {main:'炒鸡蛋'
},
language: {
frontEnd:'javascript',
backEnd: 'java';
}
}
}
let {skills : {language:{fronEnd}}} = obj;
console.log(frontEnd);
//输出:javascript
const arr = [
{name:'1老师',age:18},
{name:'2老师',age:28},
{name:'3老师',age:38}
];
arr.forEach(({name,age},inded) => {
console.log(`姓名:${name},年龄:${age}`);
})
//输出:
//姓名:1老师,年龄:18
//姓名:2老师,年龄:28
//姓名:3老师,年龄:38
函数的解构赋值
function getAPT(data) {
return [data.name,data.age]
}
const [Tname,Tage] = getAPI({name:'老师',age:18});
console.log(Tname,Tage);
//输出: 老师 18
const str = '1老师';
const [first,second,third] = str;
console.log(first,second,third);
输出: 1 老 师
const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
//item加了中括号,获得每个元素以后再获取字符串的第一个字符
arr.forEach(([item],index) => {
console.log(item)
})
输出: 1 2 3 4 5 6 7
let map = new Map();
map.set('name1','1老师');
map.set('name2','2老师');
map.set('name3','3老师');
for(let [, value] of map) {
console.log(value);
}
//输出:
// 1老师
//2老师
//3老师
node里也可以用到解构赋值
const {createServer} = require('http')
正则表达式
const str = '再见了886爱你20'
const arrReg = /(\D+)(\d+)(\D+)(\d+).exec(str);
const {1:bye,3:loveYou} = arrReg;
console.log(bye,loveYou);
//输出: 再见了 爱你
网友评论