Comment puis-je trier un tableau d'objets par plus d'un champ à l'aide de lodash. Donc, pour un tableau comme celui-ci:
[
{a: 'a', b: 2},
{a: 'a', b: 1},
{a: 'b', b: 5},
{a: 'a', b: 3},
]
J'attendrais ce résultat
[
{a: 'a', b: 1},
{a: 'a', b: 2},
{a: 'a', b: 3},
{a: 'b', b: 5},
]
C'est beaucoup plus facile dans une version actuelle de lodash (2.4.1). Vous pouvez simplement faire ceci:
var data = [
{a: 'a', b: 2},
{a: 'a', b: 1},
{a: 'b', b: 5},
{a: 'a', b: 3},
];
data = _.sortBy(data, ["a", "b"]); //key point: Passing in an array of key names
_.map(data, function(element) {console.log(element.a + " " + element.b);});
Et il affichera ceci sur la console:
"a 1"
"a 2"
"a 3"
"b 5"
Avertissement: Voir les commentaires ci-dessous. On dirait qu'il a été brièvement appelé sortByAll
dans la version 3, mais maintenant il revient à sortBy
à la place.