ES6语法糖浅谈下 | 青训营笔记

135 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的的第21天,今天主要记录的内容是记录学习es6新规范,可以做到查缺补漏,ES6小字典。

一、文章内容

本文会围绕下面列出的内容进行一个一个介绍.

  • es6简单介绍
  • let和const
  • 字符串模板
  • 箭头函数this的考点
  • 数组的简单用法
  • 对象的使用
  • set和map使用

昨天介绍了前几个的用法,今天主要讲解es6中的数组对象以及set和map.

数组妙用

赋值一个数组可以使用三个·进行快速赋值,如图1所示.

const arr = [...arr1]

image.png

图1 快速赋值

快速合并俩个或者多个数组,也是用三个·,具体案例如图2所示.

image.png

图2 快速合并数组

还有一个奇特的用法,用JavaScript代码需要多加一个变量才可以,在es6中直接操作,那就是树值交换,如图3所示.当然这个不只可以交换俩个值,可以交换好多,只要前后对照就行,那么再看看图4吧。

image.png

图3 值交换

image.png

图4 多值赋值

对象使用

最值得一提得到内容就是在es6中对象的简写形式,对象的属性和方法都可以简写,但是注意需要名字一样才行.

image.png

图5 对象属性赋值

let name = 'dog';
let pet = {
    name
}
pet

既然属性可以这样写,那么对象中方法可不可以有简单的写法,当然有,语法:直接加 函数名(){} 即可,如图6所示.

pet ={
    name,
    say(){
        console.log('dog wangWebTransportDatagramDuplexStream')
    }
}

image.png

图6 对象的方法使用

再介绍一个函数object.is();判断对象是不是严格相等,和===一样,相等返回true,不相等返回false,如图7所示.

image.png

图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);
}

image.png

foreach解释如下:

map.forEach(function(key, value, map) {
  console.log("Key: %s, Value: %s", key, value);
});

总结

通过俩天学习将es6的基础语法温习一遍,然后将重要的点都记录下来,方便以后看,本章整体学了数组的使用,对象的使用,以及Map和Set数据结构,在巩固基础的同时,熟悉基本细节.如有不懂的地方欢迎留言.


相关文章:ES6语法糖浅谈上 | 青训营笔记 - 掘金 (juejin.cn)