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