group order distinct

2019-05-13  本文已影响0人  peerben
function groupOrder(arr: any[]) {
  return arr.reduce((acc, cur) => {
    for (const [k, v] of Object.entries(cur)) {
      const vList: any[] = acc[k] || [];
      
      if (vList.every((e => e[k] !== v))) {
        vList.push({[k]: v});
      }

      vList.sort((a, b) => b[k] - a[k]);
      acc[k] = vList;
    }

    return acc;
  }, {});
}

const arr = [
  {a: 1, c: 3},
  {a: 11, b: 2},
  {a: 111, c: 3},
  {b: 22},
  {a: 1111, b:222},
];

const res = groupOrder(arr);
console.log(`res ${JSON.stringify(res)}`);
上一篇 下一篇

猜你喜欢

热点阅读