Set对象总结:
(转载请注明出处!!!!!)_(:з)∠)_
1. 概要说明
From:MDN-API
2.初始化(实例化)
1.无参:var set = new Set();
2.含参:
var set = new Set([iterable]);//From MDN-API
//[iterable]:iterable对象(非iterable对象构成的数组),包括Array,Map,Set
//eg:
var set = new Set([1, 2, 3, 4, 5]);//含有5个元素的Set,每个元素为Number
var set2 = new Set(set);
console.log(set2);//Set(5)——含有5个元素的Set,每个元素为Number
var set3 = new Set([set]);
console.log(set3);//Set(1)——含有1个元素的Set,每个元素为Set
3.实例的属性
size:Set大小
//相关测试:
//内置对象——Set
console.log(Set.size);//undefined
console.log(Set.prototype);//[object Set]
console.log(Set.length);//0
//Set实例
console.log(set2.size);//5
console.log(set2.length);//undefined
4.实例的方法(常用)
- Set.prototype.add(value)
在Set对象尾部添加一个元素。返回该Set对象。 - Set.prototype.clear()
移除Set对象内的所有元素。 - Set.prototype.delete(value)
移除Set的中与这个值相等的元素,返回Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。Set.prototype.has(value)在此后会返回false。 - Set.prototype.entries()
返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值的[value, value]数组。为了使这个方法和Map对象保持相似, 每个值的键和值相等。 - Set.prototype.forEach(callbackFn[, thisArg])
按照插入顺序,为Set对象中的每一个值调用一次callBackFn。如果提供了thisArg参数,回调中的this会是这个参数。 - Set.prototype.has(value)
返回一个布尔值,表示该值在Set中存在与否。 - Set.prototype.keys()
与values()方法相同,返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。 - Set.prototype.values()
返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。 - Set.prototype@@iterator
返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。
//相关测试:
//eg1:
set2.add(6);//元素包括:1,2,3,4,5,6
set2.add(6);//元素包括:1,2,3,4,5,6
set2.add("6")//元素包括:1,2,3,4,5,6,“6”
//eg2:
有待补充
注:MDN上关于Set的示例也很不错(实例的使用与迭代),不搬运了
5.集合的交并补操作(ES6)
From: OutbreakUniverse 优快云 Blog
let a = new Set([1, 2, 3]);
let b = new Set([3, 5, 2]);
// 并集
let unionSet = new Set([...a, ...b]);//元素包括:1,2,3,5
// 交集
let intersectionSet = new Set([...a].filter(x => b.has(x)));// 元素包括:2,3
// a-b的差集
let differenceABSet = new Set([...a].filter(x => !b.has(x)));//元素包括:1
// b-a的差集
let differenceBASet = new Set([...a].filter(x => !b.has(x)));//元素包括:5
注:JS数组求并集,交集和差集这篇博客给出了ES7/6/5下不错的求集合交并补操作的方法
6.主要参考资料(上文中均有提及)
https://blog.youkuaiyun.com/HobbitHero/article/details/77891323
https://excaliburhan.com/post/js-set-operation.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set#