聊聊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 相关文章推荐
javascript 特性检测并非浏览器检测
Jan 15 Javascript
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
动态加载js的方法汇总
Feb 13 Javascript
编写高质量JavaScript代码的基本要点
Mar 02 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
JS使用对象的defineProperty进行变量监控操作示例
Feb 02 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
vue前后分离调起微信支付
Jul 29 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
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
JS正则中的RegExp对象对象
2012/11/07 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python 登录网站详解及实例
2017/04/11 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
使用Python更换外网IP的方法
2018/07/09 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
大学生水果店创业计划书
2014/01/28 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang