Как создать набор с массивом
Я играю с Set
в Node.JS v0.11.3 и --harmony
. API работает отлично, я могу add
, remove
, clear
и т.д. Однако мне не удалось инициализировать набор с массивом. Я попытался (как было предложено страница MDN)
var mySet = new Set([1, 1, 2]);
Как преобразовать массив в набор? MDD устарел? Имеет ли Node.JS просто не реализованная функция?
Ответы
Ответ 1
v8 реализация конструктора Set
еще не поддерживает аргументы iterator
и comparator
, упомянутые в §15.16.1.1 текущий черновик спецификации Harmony, а node использует v8 в качестве интерпретатора JavaScript.
В качестве бандажной помощи вы можете использовать пакет simplesets.
Ответ 2
В настоящее время отлично работает в v8, используя массив, предоставленный конструктору. Я использую node v6.2.0 (версия v8 5.0.71.47).
> let mySet = new Set([1,2,3]);
undefined
> mySet;
Set { 1, 2, 3 }
> for ( let key of mySet ) { console.log(key) }
1
2
3
undefined
> mySet.size
3
Ответ 3
Из того, что я прочитал, я понимаю, что реализация этого является новой и экспериментальной. Некоторые вещи могут работать неправильно. Также я упомянул много примеров, когда новые функции не вели себя так, как ожидалось, до периода созревания. Было бы лучше избежать этого и просто добавить их вручную, если функционально ваша цель.
Ответ 4
Вы можете попробовать следующее:
Пример сеанса:
> var sets = require('simplesets')
undefined
> var mySet = new sets.Set([1, 1, 2]);
undefined
> mySet
{ _items: [ 1, 2 ] }
> mySet.size()
2