在Javascript中是否有用于Set数据类型的库?

时间:2010-02-26 15:40:49

标签: javascript set

由于Javascript没有内置的set数据类型,任何人都遇到了一个像集合和设置操作(如union,intersection等)的体面的库?

6 个答案:

答案 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。