-2

Say I have a list like this:

list = [
  {name: 'Charles', age: '23'},
  {name: 'Bernard', age: '37'},
  {name: 'Margarett', age: '53'},
  {name: 'Gertrude', age: '60'}
]

Then I try to sort it by the object's name:

list.sort((a,b) => {
  if(a.name < b.name){
    return -1
  }
  if(a.name = b.name){
    return 0
  }
  if(a.name > b.name){
    return 1
  }
})

Instead of sorting normally and returning:

list = [
  {name: 'Bernard', age: '37'},
  {name: 'Charles', age: '23'},
  {name: 'Gertrude', age: '60'},
  {name: 'Margarett', age: '53'},
]

, it returns:

  {name: 'Bernard', age: '37'},
  {name: 'Bernard', age: '53'},
  {name: 'Bernard', age: '60'},
  {name: 'Charles', age: '23'},

Why? How can I change that?

  • 1
    Typo. Your middle `if` statement is not doing a comparison, it's doing an ASSIGNMENT. You want `if( a.name == b.name )` with two equals. – Tim Roberts Aug 20 '23 at 17:30

0 Answers0