https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
可查看网站
Set
对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
set对象中有很多的方法
1、Set.prototype.add()
add()
方法用来向一个 Set
对象的末尾添加一个指定的值。
var mySet = new Set();
mySet.add(1);
mySet.add(5).add("some text"); // 可以链式调用
console.log(mySet);
// Set [1, 5, "some text"]
mySet.add(5).add(1);
console.log(mySet);
//Set [1, 5] // 重复的值没有被添加进去
方法用来清空一个 Set
对象中的所有元素。
var mySet = new Set();
mySet.add(1);
mySet.add("foo");
mySet.size; // 2
mySet.has("foo"); // true
mySet.clear();
mySet.size; // 0
mySet.has("bar") // false
方法可以从一个 Set
对象中删除指定的元素。
var mySet = new Set();
mySet.add("foo");
mySet.delete("bar"); // 返回 false,不包含 "bar" 这个元素
mySet.delete("foo"); // 返回 true,删除成功
mySet.has("foo"); // 返回 false,"foo" 已经成功删除
entries() 方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
var setIter = mySet.entries();
console.log(setIter.next().value); // ["foobar", "foobar"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["baz", "baz"]
方法会根据集合中元素的插入顺序,依次执行提供的回调函数。
function logSetElements(value1, value2, set) {
console.log("s[" + value1 + "] = " + value2);
}
new Set(["foo", "bar", undefined]).forEach(logSetElements);
// logs:
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"
方法返回一个布尔值来指示对应的值value是否存在Set对象中。
var mySet = new Set();
mySet.add('foo');
mySet.has('foo'); // 返回 true
mySet.has('bar'); // 返回 false
var set1 = new Set();
var obj1 = {'key1': 1};
set1.add(obj1);
set1.has(obj1); // 返回 true
set1.has({'key1': 1}); // 会返回 false,因为其是另一个对象的引用
set1.add({'key1': 1}); // 现在 set1 中有2条(不同引用的)对象了
values()
方法返回一个 Iterator
对象,该对象按照原Set 对象元素的插入顺序返回其所有元素。
keys()
方法是这个方法的别名 (与 Map
对象相似); 它的行为与 value 方法完全一致,返回 Set 对象的元素。
两个数组筛选出不同的值
var mySet = new Set();
mySet.add("foo");
mySet.add("bar");
mySet.add("baz");
var setIter = mySet.values();
console.log(setIter.next().value); // "foo"
console.log(setIter.next().value); // "bar"
console.log(setIter.next().value); // "baz"