«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать функциональность Set в JavaScript без встроенной поддержки?

Как реализовать функциональность Set в JavaScript без встроенной поддержки?

Опубликовано 9 ноября 2024 г.
Просматривать:941

How Can You Implement Set Functionality in JavaScript Without Built-in Support?

Имитация наборов в JavaScript

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

Использование объекта с логическими значениями:
Как предложено в вопросе объект можно использовать для имитации набора. Ключи представляют значения, и всем значениям присваивается значение true (или любое значение, отличное от NULL). Этот подход обеспечивает быстрый поиск и удаление, но добавление становится медленнее по мере увеличения количества ключей.

Заданный объект ES6:
Если ваша среда поддерживает ES6 (например, современные браузеры или транспилированные код), вы можете использовать встроенный объект Set. Он имеет отличную производительность для всех операций над множествами, а также позволяет легко перебирать элементы и избегать приведения строк.

Полифиллы и предварительно созданные объекты:
Для сред, которые не поддерживают ES6 вы можете использовать полифилы, такие как «ES6-Set», или готовые объекты, такие как «miniSet» или «set.js», которые предоставляют функциональность, аналогичную ES6 Set. объект. Они предлагают такие преимущества, как совместимость со старыми браузерами или меньший объем кода.

Детали реализации:

Использование объекта:

const setObj = {};
setObj["item1"] = true;
if ("item1" in setObj) { // fast lookup
  console.log("Item found");
}
delete setObj["item1"]; // fast deletion

Использование объекта Set ES6:

const set = new Set();
set.add("item1");
if (set.has("item1")) { // fast lookup
  console.log("Item found");
}
set.delete("item1"); // fast deletion

Использование полифилла:

import Set from "es6-set";
const set = new Set(["item1", "item2"]);
console.log(...set.keys()); // easy iteration

Использование предварительно созданного объекта:

const miniSet = new MiniSet("item1", "item2");
if (miniSet.has("item1")) { // fast lookup
  console.log("Item found");
}
miniSet.remove("item1"); // fast deletion

Лучший выбор зависит от конкретных требований и поддержки, доступной в вашей среде. Для сложных или критически важных приложений объект ES6 Set идеален. В противном случае разумным решением может стать использование объекта, полифилла или заранее созданного объекта-множества.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3