Подтвердить что ты не робот

Библиотека структур данных javascript

Я хотел бы попросить рекомендации библиотеки/библиотек JavaScript, которые обеспечивают реализацию некоторых базовых структур данных, таких как очередь приоритетов, карта с произвольными ключами, попытки, графики и т.д. вместе с некоторыми алгоритмами, которые работают на них.

Меня больше всего интересуют:

  • Полный набор функций,
  • Гибкость решения - это в основном относится к графикам. Например, я должен использовать предоставленную графику,
  • Использование функциональных возможностей языка - опять же он дает большую гибкость,
  • Выполнение реализации

ИЗМЕНИТЬ

Хорошо, я хотел бы отметить, что я знаю, что можно реализовать с помощью js следующие структуры данных:

  • Карта, если ключевыми значениями являются либо строки, либо числа,
  • Набор, (с использованием реализации карты),
  • Очередь, хотя, как было указано ниже, она неэффективна для некоторых браузеров,

В настоящий момент меня больше всего интересуют очереди приоритетов (не путать с очередными очередями), реализации графов, которые не очень навязчивы относительно формата входного графика. Например, они могут использовать обратные вызовы для перемещения структуры графика, а не доступа к некоторым конкретным свойствам с фиксированными именами.

4b9b3361

Ответ 1

Я рекомендую использовать Closure Library (особенно с компилятором закрытия).

Здесь у вас есть библиотека с структурами данных goog.structs. Библиотека содержит:

goog.structs.AvlTree
goog.structs.CircularBuffer
goog.structs.Heap
goog.structs.InversionMap
goog.structs.LinkedMap
goog.structs.Map
goog.structs.PriorityQueue
goog.structs.Set

В качестве примера вы можете использовать unit test: goog.structs.PriorityQueueTest.

Если вам нужно работать с массивами, есть также массив lib: goog.array.

Как отмечено в комментариях, источник переместился на github.com/google/closure, а новое местоположение документации: google.github.io/closure-library.

Ответ 2

Вы можете попробовать Buckets - это очень полная библиотека структуры данных JavaScript, которая включает в себя:

  • Связанный список
  • Словарь
  • Многоязычный словарь
  • Двоичное дерево поиска
  • Stack
  • Queue
  • Set
  • сумка
  • Двоичная куча
  • Приоритетная очередь

Ответ 3

Вероятно, большая часть того, что вы хотите, встроена в Javascript так или иначе или легко сочетается со встроенной функциональностью (собственные структуры данных Javascript невероятно гибкие). Вам может понравиться JSClass.

Что касается функциональных особенностей языка, underscore.js находится там, где он находится.

Ответ 4

Я могу помочь вам с картами с произвольными клавишами: my jshashtable делает это, и есть также реализация хеш-набора, построенная на наверху.

Ответ 6

Является ли ваш javascript в приложении или веб-странице? Если это для приложения, почему бы не перенаправить структуры данных на Redis? Там клиент для nodejs

Redis - это хранилище ключей с открытым исходным кодом с открытым исходным кодом. Он часто упоминается как сервер структуры данных, поскольку ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы.

Ответ 7

Добавление ссылки на пользовательскую библиотеку javascript, которая предоставляет приоритетные очереди, триасы, обработку базового графа и другую реализацию для будущих ссылок посетителей этой темы. Проверьте dsjslib

Ответ 8

Специально для графоподобных структур я считаю, что graphlib очень удобен:

https://github.com/cpettitt/graphlib/wiki/API-Reference

Это очень прямолинейно, быстрее других реализаций, которые я пробовал, имеет все основные функции, популярные графические алгоритмы и экспорт данных JSON.

Ответ 9

data.js.

Я не верю в то, что функция богата, как вам хочется, но у нее есть графики, хэши и коллекции.

Я бы взял этот легкий старт, который вы можете продлить.

Что касается того, что он предлагает, он хорошо написан, эффективен и документирован.