es6初级之解构----之二 及 键值反转实现
1.解构: 不定参数,扩展表达式
let arr = [100, 201, 303, 911];
let [one, ...others] = arr;
console.log(others.length); //
console.log(one); //
console.log(others[0]); //
console.log(others[1]); //

1.2 解构:数组自身链接返回自身
// 数组链接返回自身
let arr = [10, 20, 30];
let newArr = arr.concat();
console.log(newArr); //[10, 20, 30]

1.3 解构:
let arr = [10, 20, 30, 200];
let [...newArr] = arr;
console.log(newArr);

1.4 解构:
let User = {
name: 'aluoha',
age: 25,
class: {
group1: {
one: '马援',
two: '路博德'
},
group2: {
one: '卫青',
two: '刘邦'
}
},
arr: [10, 20, 30]
};
let {name,age,class: {group1},arr} = User;
console.log(name, age, group1, group1.two, arr); //aluoha 25 Object{} 路博德 [10,20,30]

1.4.2 解构:
let User = {
name: 'aluoha',
age: 25,
class: {
group1: {
one: '张飞',
two: '关羽'
},
group2: {
one: '徐晃',
two: '丁典'
}
},
arr: [10, 20, 30]
};
let {
name,
age,
class: {
group1, group2
},
arr: [one, two, three]
} = User;
console.log(name, age, group1.one, group1.two, group2.one, group2.two, one, two, three);
</script>

2. 杂项:如何反转一个对象的键值对:即将键和值反转
2.1 使用Object.keys() 获取一个对象的属性数组
var obj = {
a: 10,
b: 20,
c: 30
};
var keys = Object.keys(obj); //可以获取到对象的键,组成的数组
console.log(keys);

2.2 对obj 进行键值反转:
var obj = {
a: 10,
b: 20,
c: 30
};
var keys = Object.keys(obj); //可以获取到对象的键,组成的数组
console.log(keys); // ['a','b','c']
var res = {};
keys.forEach((val) => {
res[obj[val]] = val;
});
console.log(res); // {10:'a',20:'b',30:'c'}

2.3 使用hasOwnProperty() 来实现键值对反转
2.3.1 确认一下 hasOwnProperty 是否有效
function Myobj() {
this.a = 10;
this.b = 20;
this.c = 30;
}
Myobj.prototype.d = 40; // 在原型对象上加入一个属性 d ,值为 40
var obj = new Myobj(); // 创建一个对象
console.log(obj.d); //
console.log(obj.hasOwnProperty('d')); // false
结果:obj 能够调用d 的值,但是d 不是obj 本身的属性,所以显示false

2.3.2 键值对反转实现:
function Myobj() {
this.a = 10;
this.b = 20;
this.c = 30;
}
var obj = new Myobj(); // 创建一个对象
var keys = []; //创建一个空数组接受obj 的键
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
keys.push(key);
}
};
var res = {}; //创建一个空对象接受反转后的对象
for (var i = 0, len = keys.length; i < len; i++) {
res[obj[keys[i]]] = keys[i];
}
console.log(obj);
console.log(res);

es6初级之解构----之二 及 键值反转实现的更多相关文章
- es6初级之解构----之一
1. 访问对象属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- ES6入门之变量的解构赋值(二)
前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...
- ES6里的解构赋值
我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 一.引入背景 在ES5中,开发者们为 ...
- ES6 - 变量的解构赋值学习笔记
变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...
- es6学习笔记--解构赋值
昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法. 概念: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构 ...
- 关于ES6 的对象解构赋值
之 前写了关于ES6数组的解构 现在 go on ; 解构不仅可以用于数组,还可以用于对象: 对象的解构和数组有一个重要的不同.数组的元素是按次序排列的,变量的取值是由他的位置决定的:而对象的属性没有 ...
- es6变量的解构赋值学习笔记
1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...
- ES6 数组的解构赋值
数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; let b = ...
- ES6变量的解构赋值
变量的解构赋值 1.数组的解构赋值 2.对象的解构赋值 3.字符串的解构赋值 4.数值和布尔值的解构赋值 5.函数参数的解构赋值 6.圆括号问题 7.用途 1.数组的解构赋值 ES6 允许写成下面这样 ...
随机推荐
- 廖雪峰Java1-4数组操作-2数组排序
冒泡排序法 将第一个值和后面的值,挨个比较,如果手里的值比序列的值小,就交换数据,拿新的数字继续比较,直到最后. 再将第二个值和后面的值,挨个比较. 循环往复,排序完成. int[] ns = {28 ...
- jvm感知docker容器参数
docker中的jvm检测到的是宿主机的内存信息,它无法感知容器的资源上限,这样可能会导致意外的情况. -m参数用于限制容器使用内存的大小,超过大小时会被OOMKilled. -Xmx: 默认为物理 ...
- [UE4]点积、余弦和急停
急停控制:
- [TFS]TFS强制删除离职人员签出锁定项的方法
步骤: 1.连接到TFS数据库服务器的tfsversioncontrol库: 2.查tbl_workspace表,找出那哥们的工作目录, 如select * from tbl_workspace wh ...
- IDEA Git 配置及使用
1.下载并安装 Git 2.新建项目 3.配置版本控制器 4.新建github仓库 5.定位到项目根目录,执行命令 创建git仓库时忘记添加 .gitignore 怎么办? vi .gitignore ...
- 基于IDEA环境下的Spark2.X程序开发
我们选择在线安装 这个是windows下的scala,直接双击安装就可以了 安装好之后可以验证一下 这个是我本地的jdk1.8安装包,直接双击安装 安装完成后可以验证一下 https://archiv ...
- tomcat8+memcached session共享
一.环境准备 时间同步(同步后确认各服务器时间是否一致,不一致需要修改一下时区) 关闭防火墙 软件包和jar包链接:https://pan.baidu.com/s/1sl9Nob7 二.安装配置ngi ...
- 6.6安装编译安装zabbix3.2
添加yum源 get -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo #安装阿里云y ...
- php数组和部分操作函数
1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组: <?php $number = array(1,3,5,7,9); //定义空数组 $result = array(); ...
- 使用路由和远程访问服务为Hyper-V中虚拟机实现NAT上网
众所周知,在微软的Hyper-V环境中的网络环境中没有VMware Workstation中的NAT功能,所以Hyper-V环境中虚拟机上网一般情况下需要通过设置为外部网络方可访问网络,当然也可设置为 ...