ES6---数据解构
2018-01-16 11:28
351 查看
1、数组的解构赋值 let c = [b,a,e] = [1,2,3]; 若解构不成立则值为undifiend 2、对象的解构赋值 a、变量名和属性名一样 let { name,gender } = {name: 'jwl',gender: 'man'}; b、变量名和属性名不一样,借助第三方的变量 let city = {name: 'bj',country: 'c'}, {country: c,name: n} = city; //c='c';n='bj'; c、嵌套解构的值获取 let car_obj = { tyre: [ 'left_tyre', {r: 'right_tyre'} ] }; let { tyre: [l,{r}] } = car_obj; // 此处的tyre是指car_obj中tyre的模式,而非变量,所以tyre为undifiend; let { a: [l,{r}] } = car_obj; //此时会报错,因为在对象car_obj中没有a的这种模式。错误信息如下
// 若解构失败,则值为undifiend 3、字符串解构赋值 a、类数组赋值,从左至右一次赋值 let {[a,b]} = '0123456'; //a='0';b='1'; b、类对象赋值 let {length: len} = '0123456'; // len=7;键length是对象的属性,因此在这里可以应用。变量len才是真正的赋值主体。 4、函数参数赋值 a、无默认值 const arr = [1,2,3]; function add ([x,y,z]) { return x + y + z; } add(arr);// 6 b、有默认值 function move({x = 0, y = 0} = {}) { return [x, y]; } move();//[0,0] move({x:1})//[1,0] //注意:此方法是通过对move的参数(参数为x,y)进行解构,若解构失败就为默认值; function move ({x,y} = {x:0,y:0}) { return [x,y]; } move({x: 3}); // [3, undefined] move(); // [0, 0] //此时的参数为对象,而不是x、y,所以若此时会出现undefined 5、**用途** a、交换变量的值 let x = 1,y = 2; [x, y] = [y, x]; // 现在的值为[2,1]。原值为[1,2]; b、从函数返回多个值。ES6之前函数返回的值是只能为一个已经命名的值。现在可以直接返回匿名数组或者对象。这样使用时就可以拿来直接使用。 // 返回匿名数组 function example() { return [1, 2, 3]; } let [a, b, c] = example(); // 返回匿名对象 function car () { return { tyre: 4, color: 'red' } } let {tyre,color} = car(); //tyre=4;color='red' c、函数参数的一一对应 // 参数是一组无次序的值 function f({x, y, z}) { // x=1;y=2;z=3 } f({z: 3, y: 2, x: 1}); // 参数是一组有次序的值 function f([x, y, z]) { // x=3;y=2;x=1 } f([3, 2, 1]); d、**提取JSON数据** let json_result = { id: 666, code: 200, status: 'OK', data: null }; let {id,code,status} = json_result; //id等价于json_result.id = 666; e、设置函数参数的默认值 $.ajax = function (url,{ async = true, contentType = '',//发送信息至服务器时内容编码类型 beforeSend = function () {/*发送请求前修改函数对象的函数,如添加自定义请求头*/}, complete = function () {/*请求完成后回调的函数*/}, success = function () {}, error = function () {} }){ // do something } f、遍历Map解构 /* * Map是一种类对象的键值对数据类型; * map()是js原生数组对象的方法,可用来遍历数组; */ const map = new Map(); map.set('first', 'hello'); map.set('second', 'world'); for (let [key, value] of map) { console.log(key + " is " + value); } g、输入模块的指定方法 import {Link} from 'react-router-dom';
本文参考资料:http://es6.ruanyifeng.com/#docs/destructuring
相关文章推荐
- 【读书笔记】【深入理解ES6】#5-解构:使数据访问更便捷
- es6 入门(四):Set和Map数据解构
- ES6解构之复杂数据
- 深入理解ES6之数据解构的用法
- ES6数据的解构
- 小谈ES6解构赋值
- ES6对象和数组解构
- ES6学习总结之解构赋值及字符串模板
- ES6入门学习 - 解构
- ES6 解构赋值
- ES6数据集合set--属性和方法
- ES6 的变量对象解构
- ES6--变量的声明及解构赋值
- ES6处理数据的方法
- es6分享——变量的解构赋值
- 初识ES6 解构
- 2、ES6 === destructuring 解构
- ECMAScript6(ES6)之解构赋值(数组,对象,字符串)
- ES6新数据类型 Symbol
- es6对象的解构赋值和对象的拓展