Sortieren eines orderedMap, indem Sie einen bestimmten Schlüssel in Immutable.js
Bitte überprüfen Sie diese fiddle-Beispiel
Wie kann ich eine Art orderedMap
- Objekt, indem Sie die Tasten sequence
in absteigender Reihenfolge? Ich weiß, es ist ein sortBy
Methode, aber das Dokument nicht geben, ein klareres Beispiel.
Hier mein original Objekt:
var props = {
"item": {
"A": {
"sequence": 5
},
"B": {
"sequence": null
},
"C":{
"sequence": 2
}
}
}
Ich würde gerne das Ergebnis werden wie:
var props = {
"item": {
"A": {
"sequence": 5
},
"C":{
"sequence": 2
},
"B": {
"sequence": null
}
}
}
Beispiel-Code:
var data = Immutable.fromJS(props,(key, value)=>{
var isIndexed = Immutable.Iterable.isIndexed(value);
return isIndexed ? value.toList() :value.toOrderedMap();
});
var sorted = data.get('item').sortBy((item) => item.get('sequence'));
console.log(sorted.toJS())
- Javascript-Objekte sind ungeordnete per definition, nach
toJS()
die Sortierreihenfolge in einigen Fällen beibehalten, jedoch nicht immer.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Funktion, die Sie bereitstellen, zu
sortBy()
ist der Komparator, und es muss eine Zahl zurückgeben. Durch hinzufügen eines minus vor demitem.get('sequence')
oder im Anschluss das Ergebnis mitreverse()
kehren Sie die Sortierung, erhalten Sie die Ausgabe, die Sie wollen.Hier ein Beispiel:
Beachten Sie, dass Sie arbeiten mit einem OrderedMap und einfach aufrufen
sorted.toJS()
zurückkehren würde, eine reguläre JS-Objekt, wo die Schlüssel sind natürlich nicht sortiert.