这是我参与「第四届青训营 」笔记创作活动的的第21天,今天主要记录的内容是记录学习es6新规范,可以做到查缺补漏,ES6小字典。
一、文章内容
本文会围绕下面列出的内容进行一个一个介绍.
- es6简单介绍
- let和const
- 字符串模板
- 箭头函数this的考点
- 数组的简单用法
- 对象的使用
- set和map使用
昨天介绍了前几个的用法,今天主要讲解es6中的数组对象以及set和map.
数组妙用
赋值一个数组可以使用三个·进行快速赋值,如图1所示.
const arr = [...arr1]
图1 快速赋值
快速合并俩个或者多个数组,也是用三个·,具体案例如图2所示.图2 快速合并数组
还有一个奇特的用法,用JavaScript代码需要多加一个变量才可以,在es6中直接操作,那就是树值交换,如图3所示.当然这个不只可以交换俩个值,可以交换好多,只要前后对照就行,那么再看看图4吧。
图3 值交换
图4 多值赋值
对象使用
最值得一提得到内容就是在es6中对象的简写形式,对象的属性和方法都可以简写,但是注意需要名字一样才行.
图5 对象属性赋值
let name = 'dog';
let pet = {
name
}
pet
既然属性可以这样写,那么对象中方法可不可以有简单的写法,当然有,语法:直接加 函数名(){} 即可,如图6所示.
pet ={
name,
say(){
console.log('dog wangWebTransportDatagramDuplexStream')
}
}
图6 对象的方法使用
再介绍一个函数object.is();判断对象是不是严格相等,和===一样,相等返回true,不相等返回false,如图7所示.
图7 object的is
Set和Map
set和map都是数据结构里的内容, set和数组差不多可以里面不可以有重复的元素,而数组里可以;map是字典,由键值对组成,一个字典里键不可以重复,和数据库里的主键一样,设置了主键不可以出现一样的值.
Set创建对象
通过new关键字新建set对象,通过add添加数据,当然遍历的时候也可以用of.
var s = new Set();
s.add(1);
s.add(2);
for (let i of s) {
console.log(i);
}
另一种新建set的方式是[]作为参数传到set里.
var s = new Set([1,2,3,4]);
当然set自己也有很多属性和方法,常见的由:has()、delete() 、clear()、size. has(a)就是查看有没有该元素a、delete(B)删除B返回布尔值,clear()直接清楚set所以值,size就是set的个数.
添加删除
s.add(1).add(2).add(2);
// 注意2被加入了两次
s.size // 2
s.has(1) // true
s.has(2) // true
s.has(3) // false
s.delete(2);
s.has(2) // false
set转数组
array.form可以将set转为数组.
var array = Array.from(items);
遍历
遍历的话set和map一起讲,都可以使用下面的方法:
keys():返回键名的遍历器values():返回键值的遍历器entries():返回键值对的遍历器[]形式的forEach():使用回调函数遍历每个成员
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.values()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.entries()) {
console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
由于set没有键所以键值就是一模一样的,可以从entries()中看出。
let set = new Set([1, 2, 3]);
set.forEach((value, key) => console.log(value * 2) ) // 2 4 6
map
Map对象创建
map由键值对组成一个键对应一个值.
var m = new Map();
m.set('0',0); // 给map加一个键值对
m.set('1',1); // 给map加一个键值对
注意:键可以是上面的字符串,也可以是一个对象,也可以是一个函数,请看下面.
函数作为键
var m = new Map();
let f = () => 5;
m.set(f,'我是函数返回5');
对象作为键
var m = new Map();
let obj = {}
m.set(obj,'我是对象');
注意:这里的对象虽然是空{},但是我们在取键的时候不能直接写{},因为二者不相等.函数也是同理。
let obj = {};
obj != {}
let f = () =>{}
f != ()=>{};`
取map值
语法:map.get(键名)
var m = new Map();
let obj = {}
m.set(obj,'我是对象');
m.get(obj) // 我是对象
其他常用map函数
这里跟set一样,也有has、size、delete、clear();一并演示:
var m = new Map();
let obj = {}
m.set(obj,'我是对象');
m.size //1
m.has(obj); //true
m.clear();
m.size // 0
keys():返回键名的遍历器。键就是键values():返回键值的遍历器。值就是值entries():返回所有成员的遍历器。键值对forEach():遍历Map的所有成员。
keys、values就是数组可以使用of直接遍历,entries返回是数组下标0是键下标1是值,如下所示:
for (let [key, value] of map.entries()) {
console.log(key, value);
}
foreach解释如下:
map.forEach(function(key, value, map) {
console.log("Key: %s, Value: %s", key, value);
});
总结
通过俩天学习将es6的基础语法温习一遍,然后将重要的点都记录下来,方便以后看,本章整体学了数组的使用,对象的使用,以及Map和Set数据结构,在巩固基础的同时,熟悉基本细节.如有不懂的地方欢迎留言.