我有:
arrayBefore
arrayBefore = [{name:'n1', items: [i1]}, {name:'n2', items: [i2]}, {name:'n1', items: [i3]}]
我想创建一个函数:
myFunction
myFunction(arrayBefore)
因此它将产生:
arrayAfter
arrayAfter = [{name:'n1', items: [i1, i3]}, {name:'n2', items: [i2]}]
我尝试使用map()和filter()实现myFunction,但是我无法使其正常工作。如果我有一个接近的想法,我将展示一些我尝试过的代码,不幸的是,事实并非如此。任何帮助将不胜感激!
答案 0 :(得分:1)
这看起来像groupBy
操作。仅map
和filter
不能执行此操作。您需要一个reduce
。查看示例here
答案 1 :(得分:1)
reduce
是您要寻找的方法:
const result = arr.reduce((a, {name, items})=>{
a[name] = a[name] || { name, items:[] };
a[name].items.push(...items)
return a;
}, {});
一个例子:
let arr = [
{ name: 'n1', items: ['i1'] },
{ name: 'n2', items: ['i2'] },
{ name: 'n1', items: ['i3'] }
];
const result = arr.reduce((a, {name, items})=>{
a[name] = a[name] || { name, items:[] };
a[name].items.push(...items)
return a;
}, {});
console.log(Object.values(result))