我有一个数组,它有对象。 我需要按一个属性对这些对象进行分组,按另一个属性对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}
只需扩展您的排序功能:
null
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);