我有一个棘手的要求,我需要根据另一个对象数组中提供的关系来组合对象数组。
关系永远在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 });
})