es6新增了一种从数组或者对象中获取指定元素的方式,这种方式就是我们今天要说的解构。
在有解构之前呢,我们获取数组中的指定元素通常是根据索引去做的:
const arr = [1, 2, 3];
const a = arr[1];
有了解构之后呢,我们便可以使用如下方式快速的去获取数组中的某个元素:
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a);
console.log(b);
console.log(c);
这样打印出a, b, c的值分别是:
1
2
3
如果我们只想获取前两个元素呢,那么我们可以这样写:
const arr = [1, 2, 3];
const [a, b] = arr;
console.log(a);
console.log(b);
我们也可以结合扩展运算符获取数组中指定的多个元素,比如:
const arr = [1, 2, 3];
const [a, ...brr] = arr;
console.log(a);
console.log(brr);
这样brr就是除了1以外的其他元素组成的数组,打印出a, brr的值分别是:
1
[2, 3]
那如果我们只想获取数组中的某一个元素呢?比如我只想获取数组中的2,又该如何去写呢?
const arr = [1, 2, 3];
const [, a] = arr;
console.log(a);
以上我们通过一个逗号占位确保我们解构和数组本身的位置是一致的来获取到特定位置的某个元素。
可以看到,解构的出现方便了我们去获取数组指定位置的一个或多个元素。这也是他在代码中的一个重要的应用。
说完数组的解构,我们再来聊聊
与数组解构不同的是,对象的解构是根据属性名去匹配的,因为对象不像数组下标那样有顺序,因此它不能用下标去提取。
就比如我们定义一个对象obj,我们想获取他的name属性值就可以这样写:
const obj = {
name: 'wudixiaodoujie',
age : 18
};
const { name } = obj;
console.log(name);
wudixiaodoujie
const age = 0;
const { age: perAge } = obj;
console.log(perAge);
18
对象的解构应用还是比较广的,比如我们需要频繁的调用对象的某个属性或方法就可以通过解构将其赋值给一个变量,通过一个变量去调用可以在一定程度上减少代码量。
解构可以用在函数传递参数的过程中。我先先来看一下没有用到解构参数的例子,之后我们把它改造成解构参数。在这个例子里面我们使用解构参数改写了函数声明
交换变量:通常交换两个变量的方法需要一个额外的临时变量,来看看例子;访问数组中元素有种场景,咱们可能有一个为空的项数组。并且希望访问数组的第一个、第二个或第n个项
解构的同时赋予初始值(使用 =),2.使用的变量名与解构目标的key不一致或要使用多个变量(使用 : ),解构中的 rest(变量由多变少) 与spread(变量由少变多)
解构:从数组和对象中提取值,对变量进行赋值。数组的解构赋值1.数组的元素是按次序排列的,变量的取值由它的位置决定;对象的解构赋值1.对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
解构的作用:简化书写长度,提升开发效率。在开发中我们常用到使用ajax请求数据,并且把数据渲染到页面上。可能这个数据返回的对象或数组。
解构: ES6 中允许按照一定的模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构(Destructuring).本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予相应的值。
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。它在语法上比ES5所提供的更加简洁、紧凑、清晰。它不仅能减少你的代码量,还能从根本上改变你的编码方式。
temp是一个临时变量,它先保存a的值。然后把b的值赋值给a,接着将temp值赋给 b。如果使用解构的方式会更简单,不需要什么鬼的 temp 变量。
解构可以用于数组,还可以用于对象。对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。
相比于传统方法需要一个额外变量来进行值交换,使用解构进行值交换十分方便。但是我想到几个问题:解构赋值有没有节省空间呢?
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!