首页 > 解决方案 > 使用其值对对象数组进行排序

问题描述

我有一个对象数组:

array = [
  {
    name: 'fever',
    possibility: '20%',
  },
  {
    name: 'hiv',
    possibility: '25%',
  },
  {
    name: 'heart-attack',
    possibility: '20%'
  },
  {
    name: 'covid',
    possibility: '40%',
  },
]

我想利用它的可能性来整理对象数组。具有较高可能性的对象将位于顶部,如果两个或多个对象具有相同的可能性,则它将按字母顺序排序。我怎样才能做到这一点?

标签: javascriptarrayssorting

解决方案


String.localeCompare()与选项一起使用numeric使用 进行排序possibility,但使用-(减号) 获得降序结果。如果比较返回 0(等于),localeCompare请再次使用来比较名称:

const array = [{"name":"fever","possibility":"20%"},{"name":"hiv","possibility":"25%"},{"name":"heart-attack","possibility":"20%"},{"name":"covid","possibility":"40%"}]

const result = array.sort((a, b) => 
  -a.possibility.localeCompare(b.possibility, undefined, { numeric: true })
  ||
  a.name.localeCompare(b.name)
)

console.log(result)


推荐阅读