ES6: Set数据结构

简介: ES6: Set数据结构

ES6 提供了新的数据结构 Set。

概念: Set类似于数组,但是成员的值都是唯一的,没有重复的值。


生成方式:

Set本身是一个构造函数,用来生成 Set 数据结构。

const s = new Set();

Set函数可以接受一个数组作为参数,用来初始化。

const set = new Set([1, 2, 3, 4, 4]);


属性:

size(): 判断Set属性中元素个数

const s = new Set([1, 2, 2, 3])
console.log(s.size);

实例方法:


add(value):添加某个值,返回 Set 结构本身


delete(value):删除某个值,返回一个布尔值,表示删除是否成功


has(value):返回一个布尔值,表示该值是否为 Set 的成员


clear():清除所有成员,没有返回值

const s = new Set(); 
s.add(1).add(2).add(3); // 向 set 结构中添加值 
s.delete(2) // 删除 set 结构中的2值 
s.has(1) // 表示 set 结构中是否有1这个值 返回布尔值 
s.clear() // 清除 set 结构中的所有值

遍历


我们一般用for…of即可, 因为keys(), values()结果是一样的.


keys() 返回键名的遍历器, 这里的键名, 事实上就是键值

let s1 = new Set([1, 2, 2, 3, 4])
for(let i of s1.keys()) {
  console.log(i); // 1 2 3 4
}

values() 返回键值的遍历器

let s1 = new Set([1, 2, 2, 3, 4])
for(let i of s1.values()) {
  console.log(i); // 1 2 3 4
}

entries() 返回键值对的遍历器

let s1 = new Set([1, 2, 2, 3, 4])
for(let i of s1.entries()) {
  console.log(i); // 1 2 3 4
}
/*
  test.html:12 (2) [1, 1]
  test.html:12 (2) [2, 2]
  test.html:12 (2) [3, 3]
  test.html:12 (2) [4, 4]
*/

forEach() 用于对每个成员执行某种操作,没有返回值

s.forEach(value => console.log(value))

拓展方法:


1-将Set转化为数组

let s1 = new Set([1, 2, 2, 3, 4])
console.log(s1);
// 将Set转化为数组
console.log([...s1]);
console.log(Array.from(s1));

2-数组去重

let arr = [1, 2, 2, 2, 3, 4];
// Plan1:
let newArr1 = [...(new Set(arr))]
// Plan2:
let newArr2 = Array.from(new Set(arr));
console.log(newArr1); // [1, 2, 3, 4]
console.log(newArr2); // [1, 2, 3, 4]

面试题: 复杂数组的去重

let list = [1, 2, 2, "Nathan", "Nathan", [1, 2], [1, 2], {name: "Chen"}, {name: "Chen"}]
function check(arr) {
  let res = new Set()
  return arr.filter((item)=>{
    // 判断 has return false
    // 没有 return true
    let id = JSON.stringify(item)
    if(res.has(id)) {
      return false
    }else{
      res.add(id)
      return true
    }
  })
}
console.log(check(list));


参考: 013-ES6-Set数据结构_哔哩哔哩_bilibili


相关文章
|
9天前
|
开发者
除了交集运算,Set 类型还可以用于哪些数据结构的操作?
【10月更文挑战第30天】`Set`类型在数据结构操作方面提供了丰富的功能和便利,能够帮助开发者更高效地处理各种数据集合相关的任务,提高代码的简洁性和性能。
|
27天前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
31 4
|
27天前
|
存储
ES6中的Set数据结构的常用方法和使用场景
ES6中的Set数据结构的常用方法和使用场景
|
2月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
2月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
3月前
|
存储 JavaScript 前端开发
ES6新特性(四): Set 和 Map
ES6新特性(四): Set 和 Map
|
4月前
|
存储 JavaScript 前端开发
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
51 1
|
4月前
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
63 0
|
4月前
|
存储 JavaScript 前端开发
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(一)
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(一)
36 0
|
5月前
|
缓存 NoSQL 关系型数据库
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前

热门文章

最新文章