由于Javascript没有内置的set数据类型,任何人都遇到了一个像集合和设置操作(如union,intersection等)的体面的库?
答案 0 :(得分:19)
查看JS.Set。
JS.Set类可用于为唯一对象的集合建模。集合确保其成员之间没有重复,并允许您使用自定义相等方法进行比较以及JavaScript的===运算符。
它包含union,intersection,merge等方法......
答案 1 :(得分:7)
如果您只想访问简单的union,intersection函数,还可以尝试Underscore.js的内置Array函数。它还为数据操作提供了许多更有用的实用程序,因此如果没有,请尝试使用它。
答案 2 :(得分:4)
现在ES2015中的原始设置。
let a = new Set([1,2,3]);
let b = new Set([1,2,4]);
let intersect = new Set([...a].filter(i => b.has(i)));
let union = new Set([...a, ...b]);
这适用于使用babel进行转换或仅使用firefox进行转换。
答案 3 :(得分:3)
结帐setjs。 API提供基本操作,并且库是设计不可变的。
免责声明:我是作者。
答案 4 :(得分:1)
immutable-js公开了一个强大的set数据结构。
node.js的一个简单示例,您可以在工作here中看到。
im = require("immutable")
const mySet = im.Set([1, "a", {value: Symbol()}])
// the .add and .delete methods do not modify mySet, but return a new set instance instead.
const newSet = mySet
.add(42)
.delete(1)
console.info("Does mySet have 42?", mySet.has(42))
console.info("Does newSet have 42?", newSet.has(42))
答案 5 :(得分:0)
,现在在JS上设置了。根据您的目的,您可能还对https://github.com/fsvieira/cset(我是它的作者)感兴趣,它是一个带有常规set操作(包括笛卡尔积)的豪华set lib。