1.解构: 不定参数,扩展表达式

  1. let arr = [100, 201, 303, 911];
  2. let [one, ...others] = arr;
  3. console.log(others.length); //
  4. console.log(one); //
  5. console.log(others[0]); //
  6. console.log(others[1]); //

1.2 解构:数组自身链接返回自身

  1. // 数组链接返回自身
  2. let arr = [10, 20, 30];
  3. let newArr = arr.concat();
  4. console.log(newArr); //[10, 20, 30]

1.3 解构:

  1. let arr = [10, 20, 30, 200];
  2. let [...newArr] = arr;
  3. console.log(newArr);

1.4 解构:

  1. let User = {
  2. name: 'aluoha',
  3. age: 25,
  4. class: {
  5. group1: {
  6. one: '马援',
  7. two: '路博德'
  8. },
  9. group2: {
  10. one: '卫青',
  11. two: '刘邦'
  12. }
  13. },
  14. arr: [10, 20, 30]
  15. };
  16. let {name,age,class: {group1},arr} = User;
  17. console.log(name, age, group1, group1.two, arr); //aluoha 25 Object{} 路博德 [10,20,30]

1.4.2 解构:

  1. let User = {
  2. name: 'aluoha',
  3. age: 25,
  4. class: {
  5. group1: {
  6. one: '张飞',
  7. two: '关羽'
  8. },
  9. group2: {
  10. one: '徐晃',
  11. two: '丁典'
  12. }
  13. },
  14. arr: [10, 20, 30]
  15. };
  16. let {
  17. name,
  18. age,
  19. class: {
  20. group1, group2
  21. },
  22. arr: [one, two, three]
  23. } = User;
  24. console.log(name, age, group1.one, group1.two, group2.one, group2.two, one, two, three);
  25. </script>

2. 杂项:如何反转一个对象的键值对:即将键和值反转

2.1 使用Object.keys()  获取一个对象的属性数组

  1. var obj = {
  2. a: 10,
  3. b: 20,
  4. c: 30
  5. };
  6. var keys = Object.keys(obj); //可以获取到对象的键,组成的数组
  7. console.log(keys);

2.2 对obj 进行键值反转:

  1. var obj = {
  2. a: 10,
  3. b: 20,
  4. c: 30
  5. };
  6. var keys = Object.keys(obj); //可以获取到对象的键,组成的数组
  7. console.log(keys); // ['a','b','c']
  8. var res = {};
  9. keys.forEach((val) => {
  10. res[obj[val]] = val;
  11. });
  12. console.log(res); // {10:'a',20:'b',30:'c'}

2.3 使用hasOwnProperty()  来实现键值对反转

2.3.1  确认一下 hasOwnProperty 是否有效

  1. function Myobj() {
  2. this.a = 10;
  3. this.b = 20;
  4. this.c = 30;
  5. }
  6. Myobj.prototype.d = 40; // 在原型对象上加入一个属性 d ,值为 40
  7. var obj = new Myobj(); // 创建一个对象
  8. console.log(obj.d); //
  9. console.log(obj.hasOwnProperty('d')); // false

结果:obj 能够调用d 的值,但是d 不是obj 本身的属性,所以显示false

2.3.2 键值对反转实现:

  1. function Myobj() {
  2. this.a = 10;
  3. this.b = 20;
  4. this.c = 30;
  5. }
  6. var obj = new Myobj(); // 创建一个对象
  7. var keys = []; //创建一个空数组接受obj 的键
  8. for (var key in obj) {
  9. if (obj.hasOwnProperty(key)) {
  10. keys.push(key);
  11. }
  12. };
  13. var res = {}; //创建一个空对象接受反转后的对象
  14. for (var i = 0, len = keys.length; i < len; i++) {
  15. res[obj[keys[i]]] = keys[i];
  16. }
  17. console.log(obj);
  18. console.log(res);

es6初级之解构----之二 及 键值反转实现的更多相关文章

  1. es6初级之解构----之一

    1. 访问对象属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  3. ES6里的解构赋值

    我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 一.引入背景 在ES5中,开发者们为 ...

  4. ES6 - 变量的解构赋值学习笔记

    变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...

  5. es6学习笔记--解构赋值

    昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法. 概念: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.   数组的解构 ...

  6. 关于ES6 的对象解构赋值

    之 前写了关于ES6数组的解构 现在 go on ; 解构不仅可以用于数组,还可以用于对象: 对象的解构和数组有一个重要的不同.数组的元素是按次序排列的,变量的取值是由他的位置决定的:而对象的属性没有 ...

  7. es6变量的解构赋值学习笔记

    1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...

  8. ES6 数组的解构赋值

    数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; let b = ...

  9. ES6变量的解构赋值

    变量的解构赋值 1.数组的解构赋值 2.对象的解构赋值 3.字符串的解构赋值 4.数值和布尔值的解构赋值 5.函数参数的解构赋值 6.圆括号问题 7.用途 1.数组的解构赋值 ES6 允许写成下面这样 ...

随机推荐

  1. Win7 无法访问Installer服务

    还原系统后,卸载程序时,系统提示"无法访问Windows Installer服务" 一. 可能原因: msi.dll相关的组件未注册: 未开启windows installer服务 ...

  2. github webhook 实现代码自动部署 踩坑!! 附加git&coding webhook部署代码

    踩坑: 1.php程序执行linux命令是以webserver的user用户(如apache .www……)操作的,需要在/etc/sudoers添加用户免密码操作权限; %apache ALL=(A ...

  3. BCGcontrolBar(二) 改变RIBBON字体

    在xp系统下 BCGcontrolBar字体会发虚 这时候重新设置下字体就行了 在单文档的MainFram的onCreate中加入 CFont *font=m_wndRibbonBar.GetFont ...

  4. OpenJudge 求重要逆序对数

    https://blog.csdn.net/mrvector/article/details/81090165 [题解] 方法与求逆序对的个数类似,用归并排序分治求解.不同之处在于添加了一个虚拟指针p ...

  5. javascript-添加 class 类 和 移出 class 类 方法

    /* 添加 class 类 和 移出 class 类 方法*/ function addClass(element, className) { if(!new RegExp("(^|\\s) ...

  6. 把Excel选手名单信息导入到评委计分软件Access数据库的步骤

    第一步:用Excel制作选手名单 根据比赛要求,制作选手Excel名单信息,前4列要符合要求 A列:比赛顺序,整数数值类型.所以A列数值选中后,右击设置单元格格式 数字/数值/小数位数为0(见下图). ...

  7. 小朋友学C语言(2):安装Dev C++编译器

    (一)编译器 编译器是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) -->预处理器 (prepr ...

  8. DNS(bind)服务器安装和配置

    一.前言 DNS 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP ...

  9. VMware NAT模式多个虚拟机相互访问

    在一台主机上只允许有一个NAT模式的虚拟网络.因此,同一台主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的.

  10. Spring MVC与注解相关的一些配置的方法

    在spring mvc中,注解是需要通过配置文件去开启的,一般简单的项目可分为两个配置文件,这里姑且叫做spring-mvc.xml与spring-context.xml.其中spring-mvc.x ...