欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ES6之解构赋值

程序员文章站 2022-03-21 13:07:18
ES6允许按照一定模式从数组和对象中提取值,对变量进行赋值 称为解构赋值数组的解构1.基础解构const aaa = ['张三','李四','王二','麻子'];let [zhang,li,wang,ma] = aaa;console.log(zhang); //张三console.log(li); //李四console.log(wang) //王二console.log(ma); //麻子2.复杂的匹配规则const arr =...

ES6允许按照一定模式从数组和对象中提取值,对变量进行赋值 称为解构赋值

数组的解构

1.基础解构

const aaa = ['张三','李四','王二','麻子'];
			let [zhang,li,wang,ma] = aaa;
			console.log(zhang);  //张三
			console.log(li);     //李四
			console.log(wang)    //王二
			console.log(ma);     //麻子

2.复杂的匹配规则

const arr = ["a", "b", ["c", "d", ["e", "f", "g"]]];
const [, , [, , [, , g]]] = arr;
console.log(g); // g

3. 扩展运算符

const arr1 = [1, 2, 3];
const arr2 = ["a", "b", "c"];
const arr3 = [...arr1, ...arr2];
console.log(arr3);  // [1, 2, 3, "a", "b", "c"]

const arr4 = [1, 2, 3, 4, 5, 6];
const [a, b, ...c] = arr4;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3, 4, 5, 6

4.默认值

只有当值是undefined的时候才会使用默认值,即使值是null也不会使用默认值

const arr = [1, undefined, undefined, null];
const [a, b = 2, c, d = "aaa"] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // undefined
console.log(d); // null

5.变量交换

交换变量不需要中间变量即可完成

let a = 1 ;
let b = 2 ;

[a,b] = [b,a];
console.log(a); // 10
console.log(b); // 20

对象的解构赋值

1.基础解构

const angula_info = {
				name:'angula',
				age:'18',
				hanshu:function(){
					console.log('欢迎关注')
				}
			}
			let {name,age,hanshu} = angula_info;
			console.log(name);  //angula
			console.log(age);   //18
			console.log(hanshu);  //欢迎关注
			hanshu()  //欢迎关注

2 复杂的解构

// 可以使用:重命名变量
const test = {
    name: "angula",
    like: "code",
    skill: [
        {
            skillName: "js",
            aa: "100",
            time: 6000
        },
        {
            skillName: "vue",
            aa: "400",
            time: 3000
        },
        {
            skillName: "jquery",
            aa: "900",
            time: 60000
        }
    ]
};

const { name } = test;
const { like } = test;
const {
    skill: [skill_one, { skillName }, { skillName: skillName_three }]
} = test;

console.log(skill_one);    // {Name: "js", aa: "100", time: 6000}
console.log(skillName); // vue
console.log(sklName_three);   // jquery

3.结合扩展运算符

const obj = {
	name_one:'js',
	name_two:'jquery',
	name_three:'vue'
};
const {name_one,...other} = obj;
console.log('name_one');    //js
console.log(other);         //{name_two:'jquery',name_three:'vue'}

4.对已声明的变量进行对象的解构赋值

let age;
const obj = {
	name:'angula',
	age:'18',
	sex:'male'
}
//注意,下面这种写法会报错,这里的大括号会认为是一个块级作用域
{age} = obj;
//解决办法
({age} = obj);   //当然,为了引起不必要的麻烦,最好还是在声明的同时进行解构赋值

5.默认值

let obj = {
	name:'angula'
}
let {name,age = 18,skill=["js","vue"]};
console.log(name);    //angula
console.log(age);     //18
console.log(skill);   //["js","vue"]

字符串的解构赋值

// 字符串的解构赋值
			const str = 'my name is angula';
			const [a,b,...oth] = str;
			console.log(a);  //m
			console.log(b);  //y
			console.log(oth);  //[" ","n","a","m","e"," ","i","s"," ","a","n","g","u","l","a"]


//下面三行代码是相同的,都输出["m","y"," ","n","a","m","e"," ","i","s"," ","a","n","g","u","l","a"]
const [...obj] = str;
			console.log(obj)
			const obj2 = [...str];
			console.log(obj2);
			const obj3 = str.split("");
			console.log(obj3)
本文地址:https://blog.csdn.net/weixin_42878211/article/details/107868251
相关标签: ES6