ES6数组和对象的解构
// 数组和对象的解构
// ES6提供对数组和对象的字面量提取相关数据的方法:解构操作
// 为什么用,因为json格式的普及 ,导致大量数据提取工作
// 这个提取过程在ES6的解构语法中带来极大的便利
// 数组解构赋值,两种基本写法:
// 分行解构 单行解构
// let info=['Mr.Lee',100,'男'];//数组赋值
// let [name,age,gender]=info;数组解构赋值
// let info=['Mr.Lee',100,'男'],
// [name,age,gender] =info ;同上
// 单行解构,以上均可输出name值
// let [name,age,gender]=['Mr.Lee',100,'男'];
// console.log(name);
// 分行或单行,都可以确定必须一一完美匹配才可以正确赋值
// 数组层次也需要匹配
// let [name,[age,gender]] = ['Mr.Lee',[100,'男']];
// 用逗号作为占位符不赋值
// let[,,gender]=['Mr.Lee',100,'男'];
// 变量解构时,可在数组元素中设置一个默认值
// 当gender没有赋值时,采取默认值
// let [name,age,gender='男']=['Mr.Lee',100];
// ...var语法,可将没有赋值的内容都赋值给这个变量
// 不定元素,将其余都赋值给other
// let [name,...other]=['Mr.Lee',100,'男'];
// 对象的解构方法和数组大同小异,定义一个对象字面量,解构赋值
// 定义对象字面量
// let obj={
// name:'Mr.Lee',
// age:100,
// };
// let {name,obj}=obj;
// console.log(name);
// console.log(age);
// 解构对象至变量
// let {name,age}=obj;或({name,age}=obj);
// 直接输出变量
// console.log(name);
// console.log(age);
// 解构的变量名是已经存在的变量,会导致
// let obj={
// name:'Mr.Lee',
// age:100,
// },name='Mr.Lee';//被替换
// ({name,age}=obj);
// console.log(name);
// 对象变量解构也可以设置成一个默认值,在没有赋值时输出默认值;
// let obj={...}
// let {name,age,gerder='女'}=obj;
// console.log(gender);如果没有默认值则unidentified
// 如果不想要对象属性名作为解构变量,可通过键值对的方式更改变量名
// let {name:myName,age:myage}=obj;name将失效
// 在对象字面量里,还嵌套了对象,解构时也用同样的方法是解开即可;
// let obj={
// name:'Mr.Lee',
// age:100,
// info:{
// id:1,
// gender:'男'
// }
// }
// let {info:{id,gender}}=obj;
// console.log(gender);
// 对象的解构也支持单行的简写模式,
let {name,age}={name:'Mr.Lee',age:100};
console.log(name);