合并具有关系的对象数组

时间:2019-12-22 11:36:51

标签: javascript lodash

我有一个棘手的要求,我需要根据另一个对象数组中提供的关系来组合对象数组。

关系永远在1&2,3&4,5&6之间,值可以是AND / OR。

关系:

let relations = [{"L5L6":"AND"}];

let approvers= [{"NAME":"Tom","POSITION":"MANAGER","LEVEL":6},
                {"NAME":"Lisa","POSITION":"ASM-2","LEVEL":5},
                {"NAME":"Robert","POSITION":"RGM","LEVEL":4},
                {"NAME":"Thomas","POSITION":"ASM-1","LEVEL":5}]

根据关系数组(L1,L2 => 1),(L3,L4)=> 3,(L5,L6)=> 5组合两个数组。

let output  = [{LEVEL:5,
                NAME1:"LISA",
                POSITION1:"ASM-2",
                NAME2:"Thomas",
                POSITION2:"ASM-1",
                NAME3:"Tom",
                POSITION3:"MANAGER",
                RELATION : "AND"
              },
              {LEVEL:4,
             NAME :"Robert",
             POSITION:"RGM"
             }]            

我能够使用相同的级别合并数组,但无法合并。

const group = _.groupBy(approvers, 'LEVEL'); 

    return Object.entries(group).map( ([LEVEL, array]) => {

      return array.reduce((acc, cur, idx) => ({
        ...acc, 
        ['NAME' + (idx + 1)]: cur.FULLNAME ,
        ['POSITION' + (idx + 1)]: cur.POSITION ,

      }), { LEVEL });
    })

0 个答案:

没有答案