taoliujun / blog

https://taoliujun.github.io/blog/
https://taoliujun.github.io/blog/
0 stars 0 forks source link

整理ES6:Set真的挺好的 #14

Open taoliujun opened 1 year ago

taoliujun commented 1 year ago

为什么用Set

// Array
let arr1 = ["a", "b", "c", "d"];

arr1 = arr1.filter((element) => element !== "d");
arr1.filter((element) => element !== "e").push("e");
console.log(arr1.includes("b"));

// Object
let obj1 = { a: true, b: true, c: true, d: true };

delete obj1.d;
obj1.e = true;
console.log("b" in obj1);

// Set
let set1 = new Set(["a", "b", "c"]);

set1.delete("d");
set1.add("e");
console.log(set1.has("b"));

如上演示了Array、Object、Set三种数据结构的基本操作,Set提供了更为便捷的方式:

  1. 相比Array有更简单的语法,在运算复杂度上有很大提升。
  2. 相比Object的命令式操作,Set提供了方法式的操作。

唯一特性

在工作中,要用到集合唯一特性的场景有很多,用Array实现的时候,需要自己写很多代码来保证唯一性,而用Object实现,又不能保证元素的访问顺序。

举几个例子。

// 历史搜索记录唯一
const s1 = new Set();

s1.add("长江");
s1.add("黄河");
s1.add("故宫");
s1.add("长江");
s1.add("圆明园");

console.log(s1);
// 移除输入的重复数据ID
const a = [23, 58, 23, 19, 96];
const s1 = new Set(a);

console.log(Array.from(s1));

注意点

taoliujun commented 1 year ago

欢迎大家讨论