聊聊JS ES6中的解构


Posted in Javascript onApril 29, 2021

概述

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

对象的解构应用还是比较广的,比如我们需要频繁的调用对象的某个属性或方法就可以通过解构将其赋值给一个变量,通过一个变量去调用可以在一定程度上减少代码量。

以上就是JS ES6中的解构的详细内容,更多关于JS ES6中的解构的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jquery处理json数据实例分析
Jun 03 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
js原生map实现的方法总结
Jan 19 Javascript
Vue+webpack实现懒加载过程解析
Feb 17 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
layui使用及简单的三级联动实现教程
Dec 01 Javascript
详解TypeScript中的类型保护
Apr 29 #Javascript
7个你应该知道的JS原生错误类型
Apr 29 #Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
如何使用JavaScript策略模式校验表单
Apr 29 #Javascript
react中props 的使用及进行限制的方法
Apr 28 #Javascript
React Hook用法示例详解(6个常见hook)
vue使用v-model进行跨组件绑定的基本实现方法
You might like
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
Python中的异常处理简明介绍
2015/04/13 Python
Python计算一个文件里字数的方法
2015/06/15 Python
Python使用gRPC传输协议教程
2018/10/16 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
实习医生自我评价
2013/09/22 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
汽车销售员工作总结
2015/08/12 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技