这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战
前言:
回顾上一篇对 JS 中的重要数据结构 JSON 的理解/使用处理后数据进行交互, 经常打交道的用到的比较多. 本文来记录学习另外的数据结构: Set 和 WeakSet
在前面系列更文中, 我们对 JavaScript 的一些知识点进行了学习, 也有通过 JS 实现经典算法作具体学习, 小总结更多阅读-list & 经典排序算法-list
JavaScript 数据结构
ES6 新增数据结构: Set 和 WeakSet
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)
那么 null 和 undefined 呢??
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
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
更多阅读:
经典排序算法:
- 【JS-排序算法-sort()】、
- 【JavaScript-排序算法-希尔排序】、
- 【JS-排序算法-归并排序】、
- 【JavaScript-排序算法-计数排序】、
- 【JS-排序算法-冒泡排序】、
- JS-经典排序算法-选择排序、
- 【JS 实现-经典排序算法-插入排序】
- JS 实现-经典排序算法-JS 实现基数排序(radixSort)
- 学习经典排序算法-JS 实现快速排序(quickSort)
- 学习排序算法技巧-三路快排
JavaScript 学习提升
- 【Array.prototype.map() 】、
- 【JS-特殊符号-位运算符】、
- 【ES6 - for/of】、
- 【JS-逻辑运算符-短路了?】、
- 【JS-箭头函数】、
- 【JavaScript-forEach()】、
- 【JS-重要数据类型-JSON】、
- 【JS-数据结构-JSON-处理使用-前后端交互传递数据】、