文章目录
Set
在ES6中,Set是一种新的数据结构,它允许你存储唯一的值,而不是像数组那样可以存储重复的值。Set在ES6中提供了一种更加高效、方便的数据结构,可以帮助我们更好地处理数据。Set的作用主要有以下几个方面:
- 去重:Set中存储的值都是唯一的,可以用来去除数组中的重复项。
- 快速查找:Set内部使用了哈希表,因此查找速度非常快。
- 遍历:Set提供了迭代器,可以很方便地遍历所有的值。
- 数组去重:可以使用Set将数组去重,然后再转换回数组。
- 交集、并集、差集:Set提供了一些方法,可以方便地进行集合的操作,如并集、交集、差集等。
- 与Map的结合使用:Set可以与Map结合使用,用来保存一些键值对的键,而不需要保存对应的值。
一、创建
参数值不能有重复项
// 参数必须是可遍历对象,值不能有重复项
var set = new Set([1, 2, 3, [4], { name: 'zs' }, 3])
console.log(set); // Set(5) {1, 2, 3, Array(1), {…}}
二、用法
1.add()方法
// 1.add() 向Set中添加元素
set.add(4)
console.log(set); // Set(6) {1, 2, 3, Array(1), {…}, …}
set.add([4])
console.log(set); // Set(7) {1, 2, 3, Array(1), {…}, …}
set.add('3')
set.add(3)
console.log(set); // Set(8) {1, 2, 3, Array(1), {…}, …}
2.size 属性
// 2.size 属性 获取Set中的元素数量
console.log(set.size); // 8
3.delete()方法
// 3.delete()方法 删除Set结构中指定的值,删除成功返回true,删除失败返回false
console.log(set.delete(2)); // true
console.log(set); // Set(7) {1, 3, Array(1), {…}, 4, …}
console.log(set.delete(5)); // false
console.log(set); // Set(7) {1, 3, Array(1), {…}, 4, …}
console.log(set.delete([4])); // false
console.log(set); // Set(7) {1, 3, Array(1), {…}, 4, …}
4.clear()方法
// 4.clear()方法 清空Set中的所有元素
set.clear()
console.log(set); // Set(0) {size: 0}
5.has()方法
// 5.has()方法 判断Set结构中是否含有指定的值,有返回true,没有返回false
console.log(set.has(3)); // true
console.log(set.has(2)); // false
console.log(set.has([4])); // false
6.entries()方法
// 6.entries() 返回一个键值对的遍历器
console.log(set.entries()); // SetIterator {1 => 1, 3 => 3, Array(1) => Array(1), {…} => {…}, 4 => 4, …}
for (let [k, v] of set.entries()) {
// console.log(k); // 1 3 [4] {name: 'zs'} 4 [4] 3
console.log(v); // 1 3 [4] {name: 'zs'} 4 [4] 3
}
7.keys()方法,values()方法
// 7.keys() 返回键名的遍历器
console.log(set.keys()); // SetIterator {1, 3, Array(1), {…}, 4, …}
// values() 返回键值的遍历器
console.log(set.values()); // SetIterator {1, 3, Array(1), {…}, 4, …}
8.forEach()方法
// 8.forEach() 遍历Set中的所有元素
set.forEach((item, index) => {
// console.log(item); // 1 3 [4] {name: 'zs'} 4 [4] 3
console.log(index); // 1 3 [4] {name: 'zs'} 4 [4] 3
})
三、用Set使数组去重
// 数组去重
var arr = [1, 2, 5, 4, 6, 2, 5, 3, 6, 2, 7, 2, 8, 1, 9, 0]
var newArr = new Set(arr)
console.log([...newArr]); // (10) [1, 2, 5, 4, 6, 3, 7, 8, 9, 0]