繁体   English   中英

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

[英]Sort array of objects by field and then alphabetically

我有一个看起来像这样的对象数组:

  [
      {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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM