Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
Size属性将会返回Set对象中元素的个数。
size的值是一个整数,表示Set对象有多少条目。size的集合访问函数是undefined;你不能改变这个属性。
使用size
var mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add("some text");
mySet.size; // 3
@@iterator 属性的初始值和 values 属性的初始值是同一个函数。
mySet[Symbol.iterator];
返回 Set iterator 函数,默认值是 values() 函数。
在 for..of 使用 [@@iterator]()
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
console.log(v);
}
add() 方法用来向一个 Set 对象的末尾添加一个指定的值。
add(value)
Set 对象本身。
const 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, "some text"] // 重复的值没有被添加进去
clear() 方法用来清空一个 Set 对象中的所有元素。
clear()
undefined。
const mySet = new Set();
mySet.add(1);
mySet.add("foo");
console.log(mySet.size); // 2
console.log(mySet.has("foo")); // true
mySet.clear();
console.log(mySet.size); // 0
console.log(mySet.has("foo")); // false
delete() 方法可以从一个 Set 对象中删除指定的元素。
delete(value)
成功删除返回 true,否则返回 false。
const mySet = new Set();
mySet.add("foo");
console.log(mySet.delete("bar")); // 返回 false,不包含 "bar" 这个元素
console.log(mySet.delete("foo")); // 返回 true,删除成功
console.log(mySet.has("foo")); // 返回 false,"foo" 已经成功删除
entries() 方法返回一个新的迭代器对象,这个对象包含的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个条目的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
entries()
一个新的迭代器对象,它包含给定 Set 中的每个元素的 [value, value] 数组,按插入顺序排列。
const mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
const setIter = mySet.entries();
console.log(setIter.next().value); // ["foobar", "foobar"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["baz", "baz"]
forEach 方法会根据集合中元素的插入顺序,依次执行提供的回调函数。
mySet.forEach(callback[, thisArg])
callback
为集合中每个元素执行的回调函数,该函数接收三个参数:
thisArg可选
回调函数执行过程中的 this 值。
undefined。
输出集合对象的内容
以下代码依次打印集合对象的元素:
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"
has() 方法返回一个布尔值来指示对应的值 value 是否存在 Set 对象中。
mySet.has(value);
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 条(不同引用的)对象了
keys()方法是values()方法的别名。
keys()
一个新的迭代器对象,按插入顺序包含给定Set中每个元素的值。
values() 方法按照元素插入顺序返回一个具有 Set 对象每个元素值的全新 Iterator 对象。
mySet.values();
按照元素插入顺序返回一个包含给定的 Set 对象中每个元素值的全新 Iterator 对象。
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"
如果你感觉文章不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!