我有多个数组,其中有多种类型的数据,例如:
var student= [{
id : 1,
name : 'name1',
year: 2016,
dist_id: 251,
zone_id: 25106
},
{
id : 1,
name : 'name2',
year: 2018,
dist_id: 252,
zone_id: 25212
},];
var dist= [{
id : 251,
name : 'dist1'
},
{
id : 252,
name : 'dist2'
}];
var zone= [{
id : 25106,
name : 'zone1'
},
{
id : 25212,
name : 'zone2'
}];
我想创建一个数组,将所有数据合并为一个,这样数组中的字段如下所示:
var merge = [{
id: 1,
name : 'name1',
year: 2016,
distname : 'dist1',
zonename: 'zone1',
},
{
id: 2,
name : 'name2',
year: 2018,
distname : 'dist2',
zonename: 'zone2',
}];
提前致谢。
最佳答案
你可以拿一个Map
用于距离和区域并将值映射到新对象中。
var student = [{ id: 1, name: 'name1', year: 2016, dist_id: 251, zone_id: 25106 }, { id: 1, name: 'name2', year: 2018, dist_id: 252, zone_id: 25212 }],
dist = [{ id: 251, name: 'dist1' }, { id: 252, name: 'dist2' }],
zone = [{ id: 25106, name: 'zone1' }, { id: 25212, name: 'zone2' }],
distMap = new Map(dist.map(({ id, name: distname }) => [id, { distname }])),
zoneMap = new Map(zone.map(({ id, name: zonename }) => [id, { zonename }])),
merged = student.map(({ id, name, year, dist_id, zone_id }) => Object.assign(
{ id, name, year },
distMap.get(dist_id),
zoneMap.get(zone_id)
));
console.log(merged);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 如何在javascript中将多个数组合并为单个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535225/