new Set(['b', 'a', 'c']).sort()
genera TypeError: set.sort is not a function
. Come posso ordinare uno Set
per garantire un ordine di iterazione particolare?Come posso ordinare un `Set` ES6?
risposta
Un set non è una struttura di dati astratta ordinata.
A Set
tuttavia ha sempre lo stesso ordine di iterazione - ordine di inserimento elementi [1], quindi quando lo si itera (con un metodo di iterazione, chiamando Symbol.iterator
, o con un ciclo for ..) si può sempre prevedere che .
È sempre possibile convertire il set in un array e ordinarlo.
Array.from(new Set(["b","a","c"])).sort();
[...(new Set(["b","a","c"]))].sort(); // with spread.
[1] forEach
e CreateSetIterator
Ho cancellato la mia risposta che è la stessa, ma aggiungerò il mio commento: "Spero davvero che qualcuno possa fornire una risposta che non richiede andare da' Set' a 'Array' e ritorno. Sembra piuttosto inefficiente ". – ericsoco
@ericsoco le specifiche ECMAScript non specificano un 'OrderedSet' ma una struttura di dati simile esiste in più altre lingue, tipicamente implementate da un albero. È possibile utilizzare una libreria di raccolte di userland, ovvero: il popolare ImmutableJS fornisce un ['OrderedSet'] (https://facebook.github.io/immutable-js/docs/#/OrderedSet). In effetti, questo sarà probabilmente più efficiente in molti casi. Quindi, se hai un set con oltre 100K elementi, preferirei sicuramente utilizzare l'implementazione di un set ordinato. –
Si noti che per set di numeri è necessario fornire una funzione di confronto: '(x, y) => x - y'. I tuoi numeri saranno ordinati lessicograficamente altrimenti. – neo
- 1. Come posso ordinare un NSDictionary?
- 2. Come ordinare il set di dati?
- 3. Come posso importare condizionatamente un modulo ES6?
- 4. Come posso ordinare ObservableCollection?
- 5. Come posso ordinare parzialmente un elenco Python?
- 6. Come posso ordinare un XDocument per attributo?
- 7. Come posso ordinare una lista Perl in un ordine arbitrario?
- 8. Ordinare un set di risultati in modo casuale in mongo
- 9. Dove posso ordinare?
- 10. Come ordinare un datatable
- 11. Come ordinare un SplFixedArray?
- 12. Come posso ordinare i file YAML?
- 13. Come ordinare un vettore STL?
- 14. Come posso ordinare per genitore, quindi bambino?
- 15. Come posso ordinare le date in Perl?
- 16. ES6: È pericoloso eliminare elementi da Set/Map durante l'iterazione Set/Map?
- 17. Come posso caricare un set Hibernate mappato come un set non modificabile?
- 18. Come posso usare linq per ordinare per più campi?
- 19. Superficiale-clonazione di una mappa ES6 o Set
- 20. Come posso creare un set Python con un solo elemento?
- 21. Come posso ordinare le voci in UNION senza ORDER BY?
- 22. come ordinare un ArrayList bidimensionale
- 23. Dove posso impostare l'opzione ES6 per jshint?
- 24. Django - Come ordinare set di query in base al numero di carattere in un campo
- 25. come ordinare un set quando gli elementi hanno più relazioni tra loro
- 26. Come ordinare un arraylist di oggetti java?
- 27. Come ordinare un array che contiene dizionari?
- 28. Come ordinare/ordinare i dati in Riak?
- 29. Come posso attendere un set di funzioni di callback asincrone?
- 30. Come posso modificare un set di modifiche in RTC (eclissi)?
set sono non ordinata. – SLaks
@SLaks forse lo sono, ma mi piacerebbe essere in grado di sfruttare il vantaggio delle chiavi univoche che l'offerta di 'Set's, pur essendo ancora in grado di ordinare gli elementi. Java offre ['SortedSet's] (http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html), posso solo presumere che l'abbiano fatto perché qualcuno ha offerto un caso d'uso valido ... ES6 non dovrebbe essere Java, ma i set di ordinamento sembrano utili. – ericsoco
Non è possibile nemmeno 'sort()' a 'SortedSet'. Usa una struttura ad albero che consente l'attraversamento in ordine, ma non puoi * cambiare * questo ordine come con un 'ArrayList'. Se si desidera modificare l'ordine, utilizzare gli elenchi. –