一、 Set
1. 基本用法
Set类似于数组,但是
成员的值是唯一的,因此不会添加重复的值
let set = new Set([1, 2, 3, 1, 1, 1, 2])
[...set] // [1, 2, 3]
加入值时不会发生类型转换,1和“1”是两个值
let set = new Set([1, 2, 3, "1", 1, 1, 2])
[...set] // [1, 2, 3, "1"]
Set中NaN也是唯一的,不会重复添加
let set = new Set([1, 2, 3, "1", 1, NaN, NaN])
[...set] // [1, 2, 3, "1", NaN]
Set中,对象总是被视为不同值
Set可以用于数组去重
Array.from(new Set([1, 2, 3, 1, 1, 2])); // [1, 2, 3]
2. 属性及方法
size:返回Set的成员数add(value):Set中添加该值,返回Set本身delete(value):Set中删除该值,返回Booleanhas(value):Set中是否有该成员,返回Booleanclear(value):Set清空所有成员,无返回值
let set = new Set();
console.log(set.size); // 0
set.add(1).add(2).add(3)
set.size; // 3
set.has(1); // true
set.delete(1); // true
set.has(1); // false
set.clear();
set.size; // 0
3. 遍历
Set支持keys、values、 entries方法Set可以直接使用for...of循环
let set = new Set([1, 3, 5, 7, "red"]);
for (let x of set) {
console.log(x);
}
// 1
// 3
// 5
// 7
// red
forEach
let set = new Set([1, 3, 5, 7, "red"]);
let set = new Set([1, 3, 5, 7]);
set.forEach((value, index) => console.log(value));
// 1
// 3
// 5
// 7
二、 Map