您的位置 首页 > 数码极客

〔set如何去重复〕set用什么方法区分重复…

上期讨论了 Set 的基本知识,一文了解 JavaScript 中的 Set(集合)文末提到使用 Set 进行数组去重。

通常去重的例子都是简单数组,存储的都是基本类型,例如 ——

而在实际项目中,需要去重的数组,其数据结构可能更加复杂。

JSON 数组去重

JSON 数组是比较常见的一种数据结构,形如 [{...}, {...}]。假如需要统计出某个属性中不同的值。

先使用 .map 将 JSON 数组转变成简单数组,然后再执行去重。

由于生成的 Set 属于可迭代对象,所以可以使用数组解构符进行解构。

二维数组去重

二维数组在实际项目中也经常会遇到,形如 [[...], [...]]。

我们可以将 Set 用作存储每项的唯一值,结合 reduce 进行比对,得出无重复的项目。

当然,上面代码的缺点还是不少的。因为只是简单地将其转变成字符串作为比对的键,所以不能区分 [1, 2]、['1', '2']、['1,2'] 等子数组,

怎样对其进行优化欢迎讨论。

数组之间的比对

Set 的特性不单单可以用于单数组,对于数组之间的比较也是十分在行。

例如筛选出 A 数组有,而 B 数组没有的元素。

这里将 A 数组每一项元素和创建的 Set 比对,将 Set 中没有的筛选出来。

当然,这段代码也是不太完美。首当其冲是每次遍历中都需要创建一次 Set,而且代码阅读起来不够直观。

我们将它转换到数学上集合的概念,假如 A、B 都是集合,筛选出 A 有而 B 没有的元素,相当于求补集,这样就更加好理解。

可惜集合中没有提供内置方法供我们使用。

结语

Set 的内置方法,不单单没有提供补集,常用的交集,并集,子集等都没有提供。

针对这个问题,下期将跟大家一起,一步步扩展出一个更强大的 Set。并且结合单元测试,将它发布到 NPM 中。

PS:写文不易,希望大家多多点赞。有什么想法欢迎评论区讨论。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“set如何去重复,set用什么方法区分重复,set如何判断重复,set如何保证不重复,set对象去重复”边界阅读