ES6Set和Map方法

参考来自阮一峰的ES6

写这篇博客,源于一道一行代码给数组去重的题目,由于ES6并没有完整的学过,就觉得很bug,像这种简单方法,既然有这种方法,那就没必要浪费时间去写那许多行代码了。

Set是ES6 的新的数据结构,与Array和Object一样,
且看下面两行代码:
var set = new Set([1,2,3])
console.log(toString.call(set))//"[Object Set]"
输出是不是很熟悉;
console.log(set)//{1,2,3}是一个类数组
它能够实现去重的原因就是ES6里规定它的成员值是唯一的,这就像是对象中的键值
是唯一的一样,之前我们数组去重也曾利用过对象的这个特点,
下面代码可以看出它的去重效果:
var set = new Set([NaN,NaN,undefined,undefined,null,null,1,1,2,2])
这里我们知道它的结果
set = {NaN,undefined,null,1,2}
这时候利用Array.from(set)就可以将结果转换为数组[NaN,undefined,null,1,2]
即达到数组去重的效果;

既然是一个新的数据结构,那它自然也就有属性和方法:
Set.prototype.constructor:构造函数,默认就是Set函数;
Set.prototype.size:返回Set实例的成员总数;
Set实例的方法分为两类:操作方法和遍历方法;
add(value):添加某个值,返回Set结构本身
delete(value):删除某个值,返回一个布尔值,表示删除是否成功;
has(value):返回一个布尔值,表示该值是否为Set的成员;
clear() :清除所有成员,没有返回值;
遍历操作//其实下面的这些遍历方法在数组中也有,所以就不举例子了
Set结构的实例有四个遍历方法,可以用于遍历成员
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach() :使用回调函数遍历每个成员

这里就简单用add和size来举个小例子:
var set = new Set([1,2,3,3,4])
set.add(4,5,6)//稍微试了一下add(),delete(),和has()这三个方法,如果传递多个参数,
那就只会识别第一个参数,忽视后面所有的参数,所以对结果产生影响的只有第一个参数;
所以上面代码的返回值是{1,2,3,4}

Map方法在这里现在先不说了,能力有限,
看完整个的解释,就觉得原本很清晰的键值对形式的数据变的更混乱了,
等以后发现用它比用Object舒服再来解释吧。

你可能感兴趣的:(ES6)