ES6 Set
了解Set
ES6 提供了set数据结构,类似于数组,但是没有重复值
1. set 本身是一个构造函数,用于生成Set数据结构
const s = new Set(); [1,2,5,3,3].forEach(x => s.add(x)); for (let item of s) { console.log(item) 1 2 5 3 // 有序 }
2. Set 可以接受一个数组(或者数组对象)作为参数,用于初始化
var set = new Set([1,2,2,3]) console.log([...set]) // [1,2,3]
可用于数组去重 [...new Set(array)]
Array.from() 方法可以将Set结构转换为数组 Array.from(new Set(array))
Set实例的属性和方法
1. 属性:
· Set.prototype.constructor: 构造函数,默认是Set函数
· Set.prototype.size: 返回实例的成员总数
2. 操作方法(方法的具体实现)
· add(value): 添加一个值,返回Set结构本身
· delete(value):删除某个值,返回布尔值
· has(value) : 返回布尔值,表示是否是成员
· clear(): 清除所有成员,无返回值
s.add(1).add(2).add(2); // 链式写法 s.size(); // 2 s.has(3); // false s.delete(2); s.has(2); // false
3. 遍历方法
· keys(): 返回键名的遍历器 (什么是遍历器? Iterator)
· values(): 返回键值的遍历器
· entries(): 返回键值对的遍历器
· forEach(): 使用回调函数遍历每个成员
这里要注意Set的键名和键值是同一个值,所有key() 和values() 行为是一致的
let set = new Set(["red","green","no"]); for (let item of set.keys()) { console.log(item); // red green no } for(let item of set.values()){ console.log(item); // red green no } for(let item of set.entries()){ console.log(item); // ['red':'red'] ['green':'green'] ['no':'no'] } // 对每个成员执行某种操作,参数依次为键值、键名、集合本身 new Set([1,2,3]).forEach(value,key) => console.log(value*2); 2 4 6
数组的map() 和 filter() 可用于Set
// set 使用map方法
let set1 = new Set([1,2,3].map(item => item*2))
console.log(set1) // {2,4,6}
// set 使用filter方法
let set2 = new Set([1,2,3].filter(item => (item % 2) === 0))
console.log(set2) // {2}
详见: https://segmentfault.com/a/1190000008804891
浙公网安备 33010602011771号