Есть ли библиотека для типа данных Set в Javascript? - PullRequest
20 голосов
/ 26 февраля 2010

Поскольку в Javascript нет встроенного типа данных set, кто-нибудь сталкивался с достойной библиотекой для множеств и операций над множествами, таких как объединение, пересечение и т. Д.

Ответы [ 6 ]

19 голосов
/ 26 февраля 2010

Посмотрите на JS.Set .

Класс JS.Set можно использовать для моделирования коллекций уникальных объектов. Набор гарантирует, что среди его членов нет дубликатов, и позволяет использовать для сравнения пользовательские методы равенства, а также оператор JavaScript ===.

Содержит такие методы, как объединение, пересечение, слияние и т. Д. *

7 голосов
/ 31 октября 2011

Если вы просто хотите иметь доступ к простым функциям объединения, пересечения, вы также можете попробовать встроенные в Array функции Underscore.js . Он также предоставляет множество более полезных утилит для манипулирования данными, поэтому попробуйте, если у вас их нет.

4 голосов
/ 11 августа 2015

Наборы теперь являются родными в 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 голосов
/ 16 марта 2014

Выезд setjs . API обеспечивает основные операции, а библиотека неизменна по своему дизайну.

Отказ от ответственности: я автор.

1 голос
/ 25 декабря 2017

immutable-js предоставляет мощную set структуру данных.

Простой пример для node.js, который вы можете увидеть в работе здесь .

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))
0 голосов
/ 07 марта 2019

, как было упомянуто, теперь есть Set на JS. В зависимости от ваших целей вас также может заинтересовать https://github.com/fsvieira/cset (я его автор), это библиотека lazzy set, с обычной операцией множества, включая декартово произведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...