Javascript 将具有相同名称的对象联接到一个项中
我想把同名的对象合并到一个项目数组中,但我不知道怎么做 我有这样一个数组:Javascript 将具有相同名称的对象联接到一个项中,javascript,node.js,Javascript,Node.js,我想把同名的对象合并到一个项目数组中,但我不知道怎么做 我有这样一个数组: [ { name: 'core/core.js', item: [ [Object] ] }, { name: 'users/admin.js', item: [ [Object] ] }, { name: 'users/admin.js', item: [ [Object] ] } ] 我想要类似的东西: [ { name: 'core/core.
[
{ name: 'core/core.js',
item: [ [Object] ] },
{ name: 'users/admin.js',
item: [ [Object] ] },
{ name: 'users/admin.js',
item: [ [Object] ] }
]
我想要类似的东西:
[
{ name: 'core/core.js',
item: [ [Object] ] },
{ name: 'users/admin.js',
item: [
[ [Object] ],
[ [Object] ]
]
},
]
这是我的密码:
const pathFile = [
{ name: 'core/core.js', item: [{ name: 'core' }] },
{ name: 'users/admin.js', item: [{ name: 'admin1' }] },
{ name: 'users/admin.js', item: [{ name: 'admin2' }] },
];
const obj = pathFile.reduce((a, name) => {
if (!a[name]) {
a[name] = { name, files: [] };
}
a[name].files.push({ name });
return a;
}, {});
const arr = Object.values(obj);
console.log(JSON.stringify(arr));
您的问题是在
reduce()
循环中对键使用了错误的值。在代码中,name
指的是reduce
中的整个对象,因此需要对键使用name.name
,因为reduce循环中调用的name
每个项都有一个name
属性。最好使用不同的参数名称,例如curr
,这样更清晰
const pathFile=[{name:'core/core.js',项:[{name:'core'}]},{name:'users/admin.js',项:[{name:'admin1'}]},{name:'users/admin.js',项:[{name:'admin2'}]},];
const obj=pathFile.reduce((a,curr)=>{
如果(!a[curr.name])a[curr.name]=curr
else a[curr.name].item.push(…curr.item);
返回a;
}, {});
常量arr=对象值(obj);
console.log(arr)
您尝试了什么?我们不是来给你做作业的……是的,我试过了,但不起作用,我只是用我正在编写的代码更新了我的问题trying@JorgeFuentesGonzález发布的示例似乎非常清楚(或者现在已经很清楚)。@MarkMeyer Yep,现在它有了一个,这是我的代码:
,他尝试了代码。