JavaScript学习数据结构ES6-Set

187 阅读3分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

前言:

回顾上一篇对 JS 中的重要数据结构 JSON 的理解/使用处理后数据进行交互, 经常打交道的用到的比较多. 本文来记录学习另外的数据结构: SetWeakSet

在前面系列更文中, 我们对 JavaScript 的一些知识点进行了学习, 也有通过 JS 实现经典算法作具体学习, 小总结更多阅读-list & 经典排序算法-list

JavaScript 数据结构

ES6 新增数据结构: SetWeakSet

Set

Set | MDN Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

Set 类似于数组,但是其成员的值都是唯一的, 没有重复的值。 注意的是这里的 Set 首字母大写, 一般是用来表示构造函数, 即 Set本身是一个构造函数, 用它来生成 Set 数据结构

let set = new Set();

[1, 3, 5, 3, 7, 5, 9].forEach(p => set.add(p));

for (let i of set) {
  console.log(i);
}
// 1 3 5 7 9

// 看到这里的输出结果, 我们通过 forEach 将数组的元素逐个添加到 set 中, 而输出set却已经去重了, 这表明 通过Set结构不会添加重复的值到生成的数据中

有个注意的点: 在 Set 结构中, 两个 NaN 被认为是相同的值(而NaN !== NaN)

image- NaN !== NaN

那么 nullundefined 呢??

let set = new Set();

[1, null, 5, null, 7, undefined, 9, undefined, NaN, 8, NaN].forEach(p => set.add(p));

for (let i of set) {
  console.log(typeof(i));
}
set

image-Set()去重

Set 构造函数

上面的简单例子只是使用 Set() 构建了一个空的 Set类型 数据

Set() 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化

let set = new Set([1, 3, 5, 6, 6, 6, 7]);
[...set]
// set:  [1, 3, 5, 6, 7]

// 传入一个其他数据结构的参数:
let set = new Set(document.querySelectorAll('div'));
set.size // 56

更多阅读:

经典排序算法:

JavaScript 学习提升