目录
1、Set
用于存储任何类型的唯一值,无论是基本类型还是对象引用。且只能保存值,没有键名。遍历顺序是添加的顺序,方便保存回调函数。
Set 与 数组类似,但不同的是,它里面的元素是不重复的,如果有重复元素,Set 会自己找到重复元素并将其去掉。值得注意的是,Set 在查找重复元素时,使用的为全等(===)而非相等(==)。因此,像 1 和 '1' 出现在 Set 中时,不会被认为重复。
let num = new Set(['1', 1, 2, 3, 4, 3]);
console.log(num); // {"1", 1, 2, 3, 4}
console.log([...num]); // ["1", 1, 2, 3, 4]
①add():添加新元素。
②size:获取长度。
let num = new Set(['1', 1, 2, 3, 4, 3]);
console.log(num); // {"1", 1, 2, 3, 4}
console.log(num.size); // 5
num.add(5);
console.log(num); // {'1', 1, 2, 3, 4, 5}
console.log(num.size); // 6
③has():检测元素。
④delete():删除单个元素。
⑤clear():清空所有元素。
let num = new Set(['1', 1, 2, 3, 4, 3]);
console.log(num.has(3)); // true
console.log(num.has('3')); // false
console.log(num.delete(3)); // true
console.log(num); // {"1", 1, 2, 4}
console.log(num.clear()); // undefined
console.log(num); // {}
⑥数组转换
使用点语法或 Array.from() 将 Set 转换成数组。
let arr1 = [...num];
let arr2 = Array.from(num);
console.log(arr1); // ["1", 1, 2, 3, 4]
console.log(arr2); // ["1", 1, 2, 3, 4]
⑦遍历数据
使用 keys() 、values() 和 entries() 都可以返回迭代对象,但因为 Set 只有值没有键,所以 keys 和 values 返回的结果是一致的。
let num = new Set(['1', 1, 2, 3, 4, 3]);
console.log(num.keys()); // {"1", 1, 2, 3, 4}
console.log(num.values()); // {"1", 1, 2, 3, 4}
console.log(num.entries()); // {"1" => "1", 1 => 1, 2 => 2, 3 => 3, 4 => 4}
可以使用 forEach() 遍历 Set 数据,默认使用 values
方法创建迭代器。
let num = new Set(['1', 1, 2, 3, 4, 3]);
num.forEach((item) => {
console.log(item); // 1 1 2 3 4
});
也可以使用 for-of
遍历 Set 数据,默认使用 values