new Set(['b', 'a', 'c']).sort()
throws TypeError: set.sort is not a function
. Как я могу сортировать Set
для обеспечения определенного порядка итераций?Как я могу сортировать ES6 `Set`?
ответ
Набор не упорядоченная структура абстрактных данных.
А однако всегда имеет один и тот же порядок итераций - порядок вставки элемента [1], поэтому, когда вы его итерации (путем повторного метода, вызывая Symbol.iterator
или по циклу), вы всегда можете ожидать, что ,
Вы всегда можете преобразовать множество в массив и отсортировать его.
Array.from(new Set(["b","a","c"])).sort();
[...(new Set(["b","a","c"]))].sort(); // with spread.
[1] forEach
и CreateSetIterator
Удалил свой собственный ответ, аналогичный этому, но добавит обратно мой комментарий: «Я действительно надеюсь, что кто-то может предоставить ответ, который не требует перехода от« Установить »к« Массив »и обратно. Кажется довольно неэффективным «. – ericsoco
@ericsoco Спецификация ECMAScript не определяет «OrderedSet», но аналогичная структура данных существует на нескольких других языках, как правило, реализуется деревом. Вы можете использовать библиотеку коллекций пользовательских коллекций, а именно - популярный ImmutableJS предоставляет ['OrderedSet'] (https://facebook.github.io/immutable-js/docs/#/OrderedSet). В самом деле, это, вероятно, будет более эффективным во многих случаях. Поэтому, если у вас есть набор с более чем 100K элементами, я бы определенно рассмотрел использование упорядоченной реализации. –
Обратите внимание, что для набора чисел вы должны дать сортировку функции сравнения: '(x, y) => x - y'. Ваши номера будут отсортированы лексикографически иначе. – neo
- 1. Как я могу сортировать?
- 2. javascript es6 set feature
- 3. Как я могу сортировать ObservableCollection?
- 4. Как я могу сортировать ExpandableListview?
- 5. Как я могу сортировать NSDictionary?
- 6. Как я могу сортировать Arraylist с классом?
- 7. Где я могу сортировать?
- 8. Как я могу $ смотреть набор js (es6)?
- 9. Как я могу условно импортировать модуль ES6?
- 10. Могу ли я использовать JSNice с ES6?
- 11. ES6 Set - Как перебрать предыдущее значение?
- 12. Я не могу сортировать столбцы
- 13. Я не могу сортировать данныеofbirth
- 14. Java Set - как сортировать по перечню имен
- 15. Как я могу сортировать NSArray, содержащий NSDictionaries?
- 16. Как я могу сортировать ResultSet в java?
- 17. Как я могу сортировать массивы в коллекции?
- 18. как я могу сортировать ElasticSearch результат правильно
- 19. Как я могу сортировать значения в AngularJS?
- 20. Как я могу сортировать функцию параметризировать?
- 21. Как я могу сортировать эти данные?
- 22. Как я могу сортировать директивный вывод?
- 23. Как я могу сортировать hset в Redis?
- 24. Как я могу сортировать NSArray от NSSortDiscriptor?
- 25. Как я могу сортировать сложный ключ словаря
- 26. Как я могу сортировать массив в php
- 27. Как я могу сортировать изображения? в Matlab
- 28. Как я могу сортировать элементы в очереди?
- 29. Как я могу сортировать точки вращающегося прямоугольника?
- 30. D3 Как я могу сортировать данные динамически
Наборы являются неупорядоченными. – SLaks
@SLaks, возможно, они есть, но я хотел бы воспользоваться преимуществами уникальных ключей, которые 'Set' предлагают, хотя они все еще могут сортировать элементы. Java предлагает ['SortedSet'] (http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html), я могу только предположить, что они сделали это, потому что кто-то предложил действительный пример использования ... ES6 не должен быть Java, но сортировка наборов кажется полезной. – ericsoco
Вы не можете сортировать() 'a' SortedSet'. Он использует древовидную структуру, которая позволяет обходить порядок, но вы не можете * изменить * этот порядок, как с помощью 'ArrayList'. Если вы хотите изменить заказ, используйте списки. –