javascript - 按字段对对象数组进行排序,然后按字母顺序排序

标签 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
    })

最佳答案

您可以先对我的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)

关于javascript - 按字段对对象数组进行排序,然后按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910323/

相关文章:

php - 根据php中的dateTime对数组进行排序

bash - 如何反转文本 block 的顺序

javascript - 使用 HTMLtoJSON 将 HTML 表中的值返回为 JSON 格式

javascript - Google map 标记点击监听器

javascript - 该功能没有发出警报

javascript - 将数组与 jquery 悬停函数一起循环

javascript - 如何将作为类的 React 组件发布到 NPM 而不会出现 uglify.js 问题?

javascript - 为什么 ko.observableArray.length 不返回底层数组的长度?

javascript - Vue.js 从数组中弹出一个嵌套对象

mongodb - 为什么索引的方向在 MongoDB 中很重要?