javascript - 基于两个属性对对象数组进行排序
问题描述
我想根据name
and对数组下方进行排序is_closed
。
this.rawDataListDup = [
{id: 1, name: 'john','is_closed':true},
{id: 2, name: 'james','is_closed':true},
{id: 3, name: 'jane','is_closed':false},
{id: 4, name: 'alex','is_closed':false},
{id: 5, name: 'david','is_closed':true},
];
截至目前,我只能使用以下代码使用任何一个属性进行排序。
let colName = 'name'
this.rawDataListDup.sort((b, a) => a[colName] < b[colName] ? 1 : a[colName] > b[colName] ? -1 : 0)
我想要is_closed = false
在数组顶部的数组对象,它也应该在Alphabetical order
. 像这样
this.rawDataListDup = [
{id: 4, name: 'alex','is_closed':false},
{id: 3, name: 'jane','is_closed':false},
{id: 5, name: 'david','is_closed':true},
{id: 2, name: 'james','is_closed':true},
{id: 1, name: 'john','is_closed':true},
];
这个怎么做?
解决方案
您可以sort
在 sort 内使用多个条件来执行此操作:
const rawDataListDup = [
{id: 1, name: 'john','is_closed':true},
{id: 2, name: 'james','is_closed':true},
{id: 3, name: 'jane','is_closed':false},
{id: 4, name: 'alex','is_closed':false},
{id: 5, name: 'david','is_closed':true},
];
const sortedList = rawDataListDup.sort((a,b)=>(a.is_closed-b.is_closed) || a.name.localeCompare(b.name));
console.log(sortedList);
推荐阅读
- c# - 集成测试结果不断返回状态码 301
- python - Python 套接字:HTTP/1.0 错误请求,请求的 URL 无效
- scikit-learn - 可以添加 tf-idf 值来查找文档相似度吗?
- nginx - “如何修复 nginx:[emerg] “fastcgi_cache” 区域 “wpcache” 在 /etc/nginx/nginx.conf 中未知”
- webforms - TeamCity -> ASP .NET Web 窗体站点的运行器类型
- asp.net-core - 删除 EF Core 中的相关数据
- python - 如何通过一次加载上下文来进行预测,并针对 BERT 神经网络模型中的问题动态预测答案?
- angular - 首次以角度向网站显示组件
- haskell - 如何使用单例库中的 toSing?
- java - 如何使用tomcat7作为reactjs开发服务器而不是nodejs express服务器?