按字段排序对象数组,然后按字母顺序排序

时间:2017-12-20 16:18:17

标签: javascript arrays sorting

我有一个对象数组,如下所示:

  [
      {name: 'George', favNum: '1'},
      {name: 'Susan', favNum: '2'},
      {name: 'Bob', favNum: '1'},
      {name: 'Anna', favNum: '2'}
  ]

我想先按favNum字段对数组进行排序,然后按字母顺序排序 在生成的排序顺序中。最终结果如下:

  [
      {name: 'Bob', favNum: '1'},
      {name: 'George', favNum: '1'},
      {name: 'Anna', favNum: '2'},
      {name: 'Susan', favNum: '2'}
  ]

有没有办法使用Javascript?为了给出上下文,我在搜索其他帖子之后尝试了类似的东西,但仍然无法获得正确的排序顺序:

.sort((first, second) => {
      if (first.favNum === second.favNum) {
        return first.name > second.name ? 1 : -1
      }

      return first.favNum >= second.favNum
    })

1 个答案:

答案 0 :(得分:3)

您可以先对favNum进行排序,然后使用localeCompare按名称排序。

var data = [{name: 'George', favNum: '1'},{name: 'Susan', favNum: '2'},{name: 'Bob', favNum: '1'},{name: 'Anna', favNum: '2'}]
  
data.sort(function(a, b) {
  return a.favNum - b.favNum || a.name.localeCompare(b.name)
})

console.log(data)