今天看了一下es6的文档,发现还是比较实用的,Set结构可以用来数组的去重哎
let arr = [1,3,6,3,1,9]
let arr1 = new Set(arr)
[...arr1]的值就是[1,3,6,9] 是不是很方便
还有一个方法,就是使用Array.from(),
这样就不用来实行对象解构了,直接Array.from(new Set(你要去重的数组啊!!!)))
tips: 1.new Set().add 意味着向里面加入元素,加入的元素不会发生类型转变,也就是说加入5和"5"其实是不一样的,去重并不会将这两个去掉其中一个
2. 类似于全等运算符号"===",但是不同的是NaN,全等运算符里面两个NaN是不相等的,而在new Set().add的时候却是相等的,也就是说会发生去重
Set结构主要有四种方法
1 add 添加某个值,返回set结构本身
2 delete(value) 删除某个值,返回Boolen,表示是否删除成功
3 has(value) 返回布尔值,表示是否是Set结构的成员
4 clear() 清除所有成员
Set结构的实例有三个方法,其实感觉也没啥用
因为Set结构的键值和键名是一样的
举例 let set = new Set([1,2,3])
values()
:返回键值的遍历器 1,2,3keys()
:返回键名的遍历器1,2,3entries()
:返回键值对的遍历器[1,1].[2,2],[3,3]forEach()
:使用回调函数遍历每个成员类似于Object的方法 Object.keys() Object.values(),但是使用Object方法的话键值和键名是不一样的
使用Set结构可以轻松的实现并集,交集,和差集
代码拷贝如下:
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
原文:https://www.cnblogs.com/jiuxu/p/12083839.html