javascript - 分组和升序,如何制作具有2个属性的对象数组?
问题描述
我有一个数组,它有对象。我需要按一个属性对这些对象进行分组,并按另一个属性对 ASC 进行分组。如何做到这两点?
arr = [{cNo:1,sCode:GARAN,price:200,liquidity:0.9},{cNo:2,sCode:AKBNK,price:50,liquidity:0.9},{cNo:3,sCode:ARCLK,price:150,liquidity:0.7},{cNo:4,sCode:SAHOL,price:150,liquidity:0.9},{cNo:5,sCode:EREGL,price:50,liquidity:0.75}
我正在按流动性属性进行分组,但我不知道如何与 sCode 属性一起进行
arr=arr.sort((a,b)=>(a.likidite) < (b.likidite) ? 1 :-1 )
结果是;
arr = [{cNo:4,sCode:SAHOL,price:150,liquidity:0.9},{cNo:2,sCode:AKBNK,price:50,liquidity:0.9},{cNo:1,sCode:GARAN,price:200,liquidity:0.9},{cNo:5,sCode:EREGL,price:50,liquidity:0.75},
{cNo:3,sCode:ARCLK,price:150,liquidity:0.7}
我想要的结果;
arr = [{cNo:2,sCode:AKBNK,price:50,liquidity:0.9},{cNo:1,sCode:GARAN,price:200,liquidity:0.9},{cNo:4,sCode:SAHOL,price:150,liquidity:0.9},{cNo:5,sCode:EREGL,price:50,liquidity:0.75},{cNo:3,sCode:ARCLK,price:150,liquidity:0.7}
解决方案
只需扩展您的排序功能:
const arr = [{
cNo: 1,
sCode: 'GARAN',
price: 200,
liquidity: 0.9
}, {
cNo: 2,
sCode: 'AKBNK',
price: 50,
liquidity: 0.9
}, {
cNo: 3,
sCode: 'ARCLK',
price: 150,
liquidity: 0.7
}, {
cNo: 4,
sCode: 'SAHOL',
price: 150,
liquidity: 0.9
}, {
cNo: 5,
sCode: 'EREGL',
price: 50,
liquidity: 0.75
}];
arr.sort((a, b) => {
if (a.liquidity < b.liquidity) {
return 1;
} else if (a.liquidity > b.liquidity) {
return -1;
} else if (a.sCode < b.sCode) {
return -1;
} else if (a.sCode > b.sCode) {
return 1;
} else {
return 0;
}
})
console.log(arr);
推荐阅读
- python - mongodb:如何使用 python (pymongo) 创建计算字段?
- javascript - 将哈希码连接到单个字符串的问题_Java Script
- php - 为 PHP trait 中函数的返回类型返回“self”
- jooq - 在 JOOQ 中使用事务的更简单方法
- webrtc - WebRTC - 只有一个发射器的视频会议
- r - ggplot2 - 4 个分类变量和 1 个连续变量
- django - Django - ArrayField 的大小基于相关模型的字段值
- ios - Flutter Push Notifications:无法在后台或应用关闭时接收通知
- c++ - std::unordered_set 的迭代顺序
- typescript - 如何构建一个新对象,它动态地基于另一个对象