Набор против заказанного набора
Не могли бы вы привести пример, когда использовать вместо ? Я провел пару тестов, и даже в документации immutable-js говорится
Порядок итерации набора не определен, но стабилен
кажется порядок элементов внутри
Set
всегда совпадает с тем, в который были добавлены элементы. Это то, что кажется единственным преимуществом
OrderedSet
структура:
Тип Set с дополнительной гарантией того, что порядок итерации значений будет соответствовать порядку, в котором они были добавлены.
1 ответ
Он случайно добавляет элементы в конце, но не гарантируется, что так будет всегда. Это может измениться в следующем выпуске, и это не всегда должно быть предсказуемо. Все, что он обещает, — это стабильность при нескольких итерациях с одними и теми же данными. Честно говоря, я не вижу никакого полезного варианта использования OrderedSet. В зависимости от потребностей лучше подходят List , Map или OrderedMap или даже Set .
Если вам удастся обновить набор, он может изменить порядок. Опять же, обычно это плохой выбор для структуры данных, и вам, вероятно, следует перестроить структуру данных, например, вместо этого использовать OrderedMap или List.
В следующем примере показано, что порядок может быть немного неожиданным:
В довершение ко всему, в ImmutableJs RC12 есть ошибка , из-за которой OrderedSet ведет себя точно так же (перемещая обновленный элемент в конец списка). Это уже исправлено в (пока) невыпущенной грядущей версии 4.0.
Хорошо, это была интересная экскурсия, вы заставили нас (свободную группу сопровождающих) еще раз изучить, как работает эта редко используемая структура.