提问者:小点点

分组方式和升序方式,如何使对象数组具有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}

共1个答案

匿名用户

只需扩展您的排序功能:

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);