Set js что это?
Что это за коллекция и почему повторное добавление ничег не меняет
Работа и карьера
Программирование
Компьютеры и связь
Учёба и образование
Животные и питомцы
Ваш вопрос
4.20
Set хранит значения без повторов и сохраняет порядок их добавления. Используйте add для добавления, has для проверки, delete для удаления и size для количества элементов. Строка '1' и число 1 различаются. Объекты сравниваются по ссылке: два отдельно созданных объекта с одинаковыми полями останутся двумя элементами. Поэтому Set не удаляет автоматически дубли записей по их id.
v4-pro
Создайте коллекцию командой const tags = new Set(['чай', 'кофе', 'чай']);. В ней окажутся два значения, потому что одинаковая строка не добавляется повторно. Проверить количество можно через tags.size. Здесь используется свойство size, а не привычное для массива length.
Добавьте элемент через tags.add('какао'). Повторный вызов с той же строкой не создаст ещё одну копию. Проверка tags.has('кофе') возвращает логическое значение и не требует ручного перебора коллекции в вашем коде.
Для удаления используйте tags.delete('чай'). Метод сообщает, был ли удалён элемент. Если нужно удалить все значения, существует clear. Эти операции меняют сам Set, поэтому другие части программы, получившие ту же коллекцию, увидят изменения.
Перебирайте значения через for...of либо преобразуйте коллекцию в массив: const list = [...tags];. Порядок соответствует порядку добавления оставшихся элементов. Полученный массив является отдельным контейнером, но находящиеся внутри объекты не превращаются в глубокие копии.
Определите, какие повторы вам действительно нужно убрать. Число 1 и строка '1' считаются разными значениями. Для NaN действует особое правило сравнения Set: несколько NaN дают один элемент. Положительный и отрицательный ноль также не образуют два разных элемента.
Для объектов учитывайте ссылки. Записи {id: 7}, созданные отдельно, остаются разными элементами независимо от похожих полей. Если задача состоит в удалении повторяющихся пользователей по id, сначала выберите правило обработки этих идентификаторов. Сам Set из целых объектов такую задачу за вас не решает.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Ответить на вопрос