如何在javascript中将多个数组合并到单个数组

如何在javascript中将多个数组合并到单个数组,javascript,arrays,merge,combinations,multiple-columns,Javascript,Arrays,Merge,Combinations,Multiple Columns,我有多个数组,其中有多种类型的数据,例如: 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 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()
student
数组映射到所需的
merge
数组中,对于每个映射迭代,您将在
dist
zone
数组中分别搜索与
dist\u id
zone\u id
匹配的项,并将的
名称
合并到映射结果中:

var学生=[
{id:1,名称:'name1',年份:2016,地区id:251,分区id:25106},
{id:1,名称:'name2',年份:2018,地区id:252,分区id:25212}];
var dist=[
{id:251,名称:'dist1'},{id:252,名称:'dist2'}];
可变区=[
{id:25106,名称:'zone1'},{id:25212,名称:'zone2'}];
//在学生数组上执行映射,以获取所需的合并数组
//格式,带有所需的distname/zonename数据
var merge=student.map((s)=>{
//在dist和zone数组中搜索与dist\u id/zone\u id匹配的项
//通过筛选和映射这些数组来查找distname和zonename
//为了这个学生
const distname=dist.filter(d=>d.id==s.dist_id).map(d=>d.name)[0];
const zonename=zone.filter(z=>z.id==s.zone_id).map(z=>z.name)[0];
返回{
id:s.id,
姓名:s.name,
年份:美国年,
distname:distname,
zonename:zonename
}
});
log('required merge array:',merge)
您可以选择距离和区域,并映射新对象中的值

var student=[{id:1,name:'name1',年份:2016,地区id:251,地区id:25106},{id:1,name:'name2',年份:2018,地区id:252,地区id:25212}],
dist=[{id:251,名称:'dist1'},{id:252,名称:'dist2'}],
zone=[{id:25106,名称:'zone1'},{id:25212,名称:'zone2'}],
distMap=newmap(dist.Map(({id,name:distname})=>[id,{distname}]),
zoneMap=newmap(zone.Map({id,name:zonename})=>[id,{zonename}]),
合并=student.map({id,name,year,dist_id,zone_id})=>Object.assign(
{id,name,year},
distMap.get(dist_id),
zoneMap.get(区域id)
));
console.log(合并)

.as控制台包装{max height:100%!important;top:0;}
您可以通过使用lodash var merge=uu.merge(arr1,arr2)来实现这一点;请包括您迄今为止的尝试以及您面临的问题