es6 解构

1.解构的基本用法

我们经常需要从已经存在的对象或数组中摘取部分数据,没有ES6解构之前,需要大量遍历,写许多重复的代码。如下代码

var user={name:"test",age:18,gender:"female",company:"mico"}
var name=user.name;
var company=user.company;var age=user.age
console.log("name:",name);     //输出 name: test
console.log("company:",company); //输出 company: micoconsole.log("age:",age); //输出 age:18

 es6解构处理是这样的:

var user={name:"test",age:18,gender:"female",company:"mico"}
var {name,company,age}=user;  //解构
console.log("name:",name);     //输出 name: test
console.log("company:",company); //输出 company: mico

console.log("age:",age); //输出 age:18
console.log({name,company}); //输出 { name: ‘test‘, company: ‘mico‘ }

es6解构,让代码简洁,省去重复的赋值代码,

2.利用ES6解构实现交换变量

平时我们交换变量的时候都要定义一个中间的临时变量来完成交换,现在用数组的解构轻松可以交换变量,而且还省掉了临时变量,代码如下:

let a=1;
let b=2;
[a,b]=[b,a];
console.log(`a=${a}`)  //输出a=2
console.log(`b=${b}`) //输出b=1

3.利用ES6解构取任意层级的数据赋值

var house = {
    width: "20m",
    height: "30m",
    people: [{
        name: "test1",
        age: 18,
        gender: "female",
        company: "mico-test1"
    }, {
        name: "test2",
        age: 18,
        gender: "male",
        company: "mico-test2"
    }]
}
let {people:[,{company}]} = house;
let {people:[,{company:com}]} = house;
console.log(company); //输出 mico-test2
console.log(com); //输出 mico-test2

 4.利用ES6解构数据赋值,并且添加其他的属性

var house = {
    width: "20m",
    height: "30m",
    people: [{
        name: "test1",
        age: 18,
        gender: "female",
        company: "mico-test1"
    }, {
        name: "test2",
        age: 18,
        gender: "male",
        company: "mico-test2"
    }]
}
let {people,address=""} = house; //address 是添加的属性
console.log( {people,address}); //输出{people:...,address:""}

可以用等号给添加的属性赋一个默认值,也可以不给他赋值,这样打印出来address就是undefined( address: undefined )

5.ES6解构为非同名变量赋值

var house = {
    width: "20m",
    height: "30m",
}
let {width:newWidth,height:newHeight} = house; 

console.log("newWidth:",newWidth); //输出newWidth: 20m
console.log("newHeight:",newHeight); //输出newHeight: 30m

取出house里的width和height并且赋给newWidth和newHeight两个局部变量,就可以在旧的属性后面用冒号:紧跟新的变量,表示把取出的值放在新变量里。

6.ES6解构数组复制

ar people= [{
    name: "test1",
    age: 18,
    gender: "female",
    company: "mico-test1"
}, {
    name: "test2",
    age: 18,
    gender: "male",
    company: "mico-test2"
}]
let [...clonePeople]=people
console.log("clonePeople:",clonePeople); //输出clonePeople: [ { name: ‘test1‘,age: 18,gender: ‘female‘,company: ‘mico-test1‘ },{ name: ‘test2‘, age: 18, gender: ‘male‘, company: ‘mico-test2‘ } ]
clonePeople[0].name="ll";
console.log(people[0].name) //输出ll

let numbers=[1,2,3];

let [...cloneNumbers]=numbers;

cloneNumbers[2]=77;

console.log("cloneNumbers=",cloneNumbers); //输出cloneNumbers= [ 1, 2, 77 ]

console.log("numbers=",numbers);          //输出numbers= [ 1, 2, 3 ]

 

用解构数组复制以后,

1.如果数组成员是引用类型,那么旧的数组和新的数组都是指向一个地址,无论哪个变量改变,数组都会跟着改变

2.如果数组是基本类型,那么旧的数组和新的数组,无论哪个变量改变都不会相互影响。

注意:解构里为对象赋值的,都是指向的同一个地址,所以旧的对象值,与赋值后的变量是相互影响的

例如:

var house = {
    width: "20m",
    height: "30m",
    people: [{
        name: "test1",
        age: 18,
        gender: "female",
        company: "mico-test1"
    }, {
        name: "test2",
        age: 18,
        gender: "male",
        company: "mico-test2"
    }]
}
let {people} = house; //address 是添加的属性
console.log(people); //输出[ { name: ‘test1‘,age: 18,gender: ‘female‘,company: ‘mico-test1‘ },{ name: ‘test2‘, age: 18, gender: ‘male‘, company: ‘mico-test2‘ } ]
people[0].name="arry";
console.log(house.people[0].name);//输出arry

赋值后的变量people里第一个值的name改成arry,结果house里面对应的people值也改成了arry

原文地址:https://www.cnblogs.com/greenteaone/p/9647930.html

时间: 2024-11-06 10:34:38

es6 解构的相关文章

ES6解构赋值

前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程.本文将详细介绍ES6解构赋值 引入 在ES5中,开发者们为了从对象和数组中获取特定数据并赋值给变量,编写了许多看起来同质化的代码 let options = { repeat: true, save: false }; // 从对象中提取数据 let repeat = options.repeat, save = option

ES6 解构赋值用途

1.交换变量的值2.从函数返回多个值3.函数参数的定义4.提取json数据5.函数参数的默认值6.遍历Map结构7.输入模块的指定方法   1.交换变量的值 // es5 console.log("es5"); var a = 100; var b = 200; var temp; temp = a; a = b; b = temp; console.log(a, b) // es6 console.log("es6") var x = 1000, y = 2000

初识ES6 解构

1.数组的解构 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 例子: let [a, b, c] = [1, 2, 3]; console.log(a);//1console.log(b)://2console.log(c)://3 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值. 本质上,这种写法属于"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予对应的值.下面是一些使用嵌套数组进行解构的例子. 2.对象的解构 对象的解构与数组有

妙用ES6解构和扩展运算符让你的代码更优雅

Javascript ES6/ES2015尘埃落定,其中许多特性其实是为了简化代码.解构运算符,扩展运算符,和rest运算符就是其中很好的特性,它们可以通过减少赋值语句的使用,或者减少通过下标访问数组或对象的方式,使代码更加简洁优雅,可读性更佳.现在各浏览器及node.js都加快了部署ES6的步伐.ES6的学习正当其时. 解构 解构的作用是可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值 数组解构赋值: var arr = ['this is

ES6解构

解构赋值: 解构赋值语法是一个 Javascript 表达式,这使得可以将值从数组或属性从对象提取到不同的变量中. 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 然而javascript是一门很灵活的语言,所以只要符合要求,即可实现结构赋值,比如对象,数组,函数返回值等只要结果是可以遍历即可解构赋值. 比如Math对像可以解构赋值,因为可以进行迭代的迭代器使用 Iterator(

js es6 解构赋值

解构赋值:es6允许按照一定的模式,从数组或对象中提取值 let [a,b,c] = [1,2,3]; let {a,b}= {a:1,b:2}; 对象 let {a,b}= {b:1,a:2} //输出2,1,即找属性名,不管什么位置 数组例子1:(完全解构) let [a,b,c] = [1,2,3]; console.log(a)//1 console.log(b)//2 console.log(c)//3 例子2:(不完全解构) let [a,[b],c] = [1,[2,3],func

简单看看es6解构赋值

哎,我真的是太难了,今天就被这个解构赋值(也可以叫做析构,貌似析构是在c++中的,所以我这里叫做解构赋值吧)弄的我很烦,本来以为很容易的,结果还是弄了好久...就总结一下解构吧! 1.解构的基本使用 什么叫做解构呢?其实就是类似正则表达式的这么一个东西,就是用一个有规则的表达式去匹配一个对象,这个表达式中刚好有一些属性,只要是匹配到了的东西都会自动赋值给这些属性,然后这个属性我们就可以随便使用了,所以通用的写法应该是下面这个样子的(这里是对象类型的解构,对于数组类型的解构比较容易,不多说,自己查

ES6 - 解构(数组和对象)

解构对象 /** * 解构:快捷,方便 * * 对象解构 */ { var expense = { type: "es6", amount: "45" }; //1.ES5 // var type = expense.type; // var amount = expense.amount; // console.log(type, amount); //output: es6 45 //2.ES6 const { type, amount, abc } = exp

260 ES6解构赋值

ES6中允许从数组中提取值,按照对应位置,对变量赋值,对象也可以实现解构.[解构:分解数据结构.] 解构赋值就是把数据结构分解,然后给变量进行赋值 如果解构不成功,变量跟数值个数不匹配的时候,变量的值为undefined 数组解构用中括号包裹,多个变量用逗号隔开,对象解构用花括号包裹,多个变量用逗号隔开 利用解构赋值能够让我们方便的去取对象中的属性跟方法 数组解构 如果解构不成功,变量的值为undefined let ary = [1, 2, 3]; let [a, b, c, d, e] =