MSDN ссылается на абстракцию Set коллекции JavaScript . У меня есть массив объектов, которые я хотел бы преобразовать в набор, чтобы я мог удалить ( .delete()
) различные элементы по имени:
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
Как мне преобразовать этот массив в набор? Более конкретно, возможно ли сделать это без перебора итераций по вышеуказанному массиву? Документация относительно отсутствует (достаточно для созданных экземпляров наборов; не для преобразований - если это возможно).
Я также могу подумать о преобразовании в карту для удаления по ключу. То, что я пытаюсь сделать, - это итеративная коллекция, к которой можно получить доступ или изменить ее, получая доступ к элементам в основном через ключ (в отличие от индекса).
Преобразование из массива в другой является конечной целью.
источник
{"bob", "dole"}
не является допустимым объектом.Set
иMap
являются «чистой» реализацией тех конструкций данных, которые не страдают от проблем, которыеObject
могут возникнуть при добавлении вещей в его прототип.Ответы:
Просто передайте массив конструктору Set. Конструктор Set принимает
iterable
параметр. Объект Array реализуетiterable
протокол, поэтому его допустимый параметр.Посмотреть здесь
источник
Если вы начинаете с:
И вы хотите набор, скажем, имен, вы бы сделали:
источник
То, что Леви сказал о передаче его в конструктор, правильно, но вы также можете использовать объект.
Я думаю, что Веверке пытается сказать, что вы можете легко использовать
delete
ключевое слово на объекте для достижения того же эффекта.Я думаю, что вы смущены терминологией; свойства являются компонентами объекта, которые вы можете использовать в качестве именованных индексов (если вы хотите думать об этом таким образом).
Попробуйте что-то вроде этого:
Тогда вы можете просто сделать это:
Структура объекта тогда будет такой:
Который имеет тот же эффект.
источник
По определению «Набор - это набор значений, где каждое значение может встречаться только один раз». Таким образом, если ваш массив имеет повторяющиеся значения, тогда только одно значение среди повторяющихся значений будет добавлено в ваш набор.
Так что не конвертируйте в set, если у вас есть повторяющиеся значения в вашем массиве.
источник