J’ai une liste d’objets que je voudrais trier en fonction d’un champ name de type string.
var list = [
{ name: 'Jean', age: 25, id: 10001 },
{ name: 'Bob', age: 30, id: 10002 },
{ name: 'Alex', age: 18, id: 10003 }
];
J’ai essayé la méthode suivante:
list.sort(function (a, b) {
return a.attr - b.attr
})
Main, ça ne fonctionne pas. Comment je peux trier la liste d’objets en fonction de l’attribut name?
Isaac
2
Vous pouvez utiliser la méthode sort() comme suit:
var list = [
{ name: 'Jean', age: 25, id: 10001 },
{ name: 'Bob', age: 30, id: 10002 },
{ name: 'Alex', age: 18, id: 10003 }
];
list.sort((a, b) => (a.name > b.name) - (a.name < b.name))
console.log(list)
Sortie:
0:(3) {name: "Alex", age: 18, id: 10003}
1:(3) {name: "Bob", age: 30, id: 10002}
2:(3) {name: "Jean", age: 25, id: 10001}
Henri
3
Vous pouvez utiliser la méthode String.prototype.localeCompare() pour trier une liste d’objets en JavaScript.
var list = [
{ name: 'Jean', age: 25, id: 10001 },
{ name: 'Bob', age: 30, id: 10002 },
{ name: 'Alex', age: 18, id: 10003 }
];
list.sort(function (a, b) {
return ('' + a.name).localeCompare(b.name);
})
console.log(list)
Sortie:
0:(3) {name: "Alex", age: 18, id: 10003}
1:(3) {name: "Bob", age: 30, id: 10002}
2:(3) {name: "Jean", age: 25, id: 10001}