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 相关文章推荐
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
JS 退出系统并跳转到登录界面的实现代码
Jun 29 Javascript
使用javascript过滤html的字符串(注释标记法)
Jul 08 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
Sep 01 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
jQuery中:text选择器用法实例
Jan 03 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
微信小程序实现单选功能
Oct 30 Javascript
JS控制GIF图片的停止与显示
Oct 24 Javascript
Javascript中的this,bind和that使用实例
Dec 05 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
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python 实时遍历日志文件
2016/04/12 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
基于python监控程序是否关闭
2020/01/14 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
德国帽子专家:Hutshopping
2019/11/03 全球购物
Python面试题集
2012/03/08 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
环保公益广告语
2014/03/13 职场文书
工作保证书范文
2014/04/29 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
普通党员对照检查材料
2014/08/28 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python