javascript - 使用其值对对象数组进行排序
问题描述
我有一个对象数组:
array = [
{
name: 'fever',
possibility: '20%',
},
{
name: 'hiv',
possibility: '25%',
},
{
name: 'heart-attack',
possibility: '20%'
},
{
name: 'covid',
possibility: '40%',
},
]
我想利用它的可能性来整理对象数组。具有较高可能性的对象将位于顶部,如果两个或多个对象具有相同的可能性,则它将按字母顺序排序。我怎样才能做到这一点?
解决方案
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)
推荐阅读
- swift - 如何在 Swift 中重新解释_cast?
- java - UrlDecoder 解码多次
- python - 是否可以使用“mlxtend.plotting”设置底部区域的颜色?
- c# - 使用 C# 从随机用户 API 检索数据
- elasticsearch - 在 grok 中提取子字符串作为新字段
- java - AWS Java 开发工具包错误 - IAM 用户的 withPermissionsBoundary
- sql - 如何将一个表关联到另一个已经有关系的表(N:N)?
- angular - 错误类型是一个字符串,但服务器发送一个描述错误 Angular8 的 json 对象
- python - 当我使用virtualenv创建虚拟环境时,为什么项目使用它?
- laravel - 从不同的文本区域通过电子邮件发送数据