ES6知识点整理之数组解构和字符串解构的应用示例


Posted in Javascript onApril 17, 2019

本文实例讲述了ES6知识点整理之数组解构和字符串解构的应用。分享给大家供大家参考,具体如下:

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring), 而数组的解构赋值是从数组中提取值,按照对应位置,对变量赋值。

ES6之前的赋值操作

var arr = [1,2,3];
var a = arr[0];
var b = arr[1];
var c = arr[2];
console.log(a,b,c); // 1 2 3

对一维数组的解构赋值的应用

var arr = [1,2,3];
var [a,b,c] = arr;
console.log(a,b,c); // 1 2 3

对多维数组的解构赋值的应用

let arr = [22, [5,8], 11];
let [a,[b,c],d] = arr;
console.log(a,b,c,d); // 22 5 8 11

解构赋值用于变量的交换举例

let x = 11;
let y = 22;
[y,x] = [x,y];
console.log(x,y); // 22 11

解构赋值中不完全的解析示例

let arr = [22, [5,8], 11];
let [a,[b],c] = arr;
console.log(a, b, c); // 22 5 11
let [m,[,n],o] = arr;
console.log(m, n, o); // 22 8 11

不能被数组解析的值

let [m] = "";
console.log(m); // undefined;
let [x,y] = NaN; // NaN is not iterable. 不能被数组解析的值:NaN, undefined, null, {}

实现了iterator接口的类型都可以被解析赋值

let [x,y] = new Set([22, 33]);
console.log(x,y); // 22 33

自己创造一个实现iterator接口的对象进行解构赋值

class Group{
 constructor() {
 }
 next() {
  return {value:'Joh', done: false};
 }
 [Symbol.iterator]() {
  return this;
 }
}
let group = new Group();
let [x,y,z,m,n] = group;
console.log(x,y,z,m,n); // Joh Joh Joh Joh Joh 备注:这里如果类中的next的done为true,那么全为undefined

… 运算符 转换成数组的解构举例

var [x,w, ...y] = [1,2,3,4,5,6];
console.log(x,w, y); // 1 2 [3,4,5,6]

解构数组的默认值

如果数组中的不是undefined,都会被成功解构, 不会被默认值替代

let [x=15, y] = [undefined, 12];
console.log(x,y); // 15 12
let [m=12, n] = [null, 10];
console.log(m, n); // null 10

字符串解构的处理

var [a,b,c] = 'hello';
console.log(a,b,c); // h e l

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试上述代码运行结果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
CLASS_CONFUSION JS混淆 全源码
Dec 12 Javascript
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
javascript深入理解js闭包
Jul 03 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
微信小程序中多个页面传参通信的学习与实践
May 05 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 #Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
Apr 17 #Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 #Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 17 #Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 #Javascript
mpvue性能优化实战技巧(小结)
Apr 17 #Javascript
node.js监听文件变化的实现方法
Apr 17 #Javascript
You might like
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python字节单位转换实例
2019/12/05 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
C有"按引用传递"吗
2016/09/06 面试题
自我评价是什么
2014/01/04 职场文书
个人求职自荐信范文
2014/06/20 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
中层干部考核评语
2015/01/04 职场文书
佛光寺导游词
2015/02/10 职场文书
大学生年度个人总结
2015/02/15 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
结婚幸福感言
2015/08/01 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
python 进阶学习之python装饰器小结
2021/09/04 Python
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python