我有对象数组:
const items = [{ search_type: 'environment',
search_code: 'TBA_ENVIRONMENT00002',
asset_code: 'ASSET00002' },
{ search_type: 'job',
search_code: 'TBA_JOB00002',
asset_code: 'ASSET00002' },
{ search_type: 'environment',
search_code: 'TBA_ENVIRONMENT00002',
asset_code: 'ASSET00004' },
{ search_type: 'job',
search_code: 'TBA_JOB00002',
asset_code: 'ASSET00004' },
{ search_type: 'job',
search_code: 'TBA_JOB00003',
asset_code: 'ASSET00004' },
{ search_type: 'scene',
search_code: 'TBA_SCENE00006',
asset_code: 'ASSET00002' },
];
并想返回类似的东西:
{
ASSET00002: {
environment:["TBA_ENVIRONMENT00002"],
job:["TBA_JOB00002"],
scene:["TBA_SCENE00006"]
},
ASSET00004: {
environment:["TBA_ENVIRONMENT00002"],
job:["TBA_JOB00002","TBA_JOB00003"]
},
}
在这里,我使用 Reduce 函数使用了这个逻辑:
const result = items.reduce((acc, item) => {
const { search_type, search_code, asset_code } = item;
return {
...acc,
[asset_code]: {
...acc[asset_code], [search_type]: [search_code]
},
};
}, {});
我得到以下结果:
{
ASSET00002: {
environment:["TBA_ENVIRONMENT00002"],
job:["TBA_JOB00002"],
scene:["TBA_SCENE00006"]
},
ASSET00004: {
environment:["TBA_ENVIRONMENT00002"],
job:["TBA_JOB00003"]
},
}
在返回 "ASSET00004"-> "job" 时,我应该得到具有两个值的数组,但只有一个。我知道我的代码中缺少一些内容,但找不到将值正确推送到数组中的方法。任何帮助将不胜感激。