0

I have an array and it has objects. I need to group these objects by one property and ASC by the other property. How to do both?

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}

I'm doing group by liquidity property but I don't know how to do it together with sCode property

arr=arr.sort((a,b)=>(a.likidite) < (b.likidite) ? 1 :-1 )

Result is;

 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}

Result I want ;

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}
safa aytan
  • 431
  • 1
  • 6
  • 16
  • This question has been already answered here: https://stackoverflow.com/questions/46794232/group-objects-by-multiple-properties-in-array-then-sum-up-their-values – Rafał Figura Jul 07 '20 at 12:30

1 Answers1

0

just extend your sorting function:

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);
Argee
  • 1,216
  • 1
  • 12
  • 22