Comment trier une liste en JavaScript

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?

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}

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}