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

标签 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 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/

相关文章:

bash - Unix : merge many files, 删除所有文件的第一行

javascript - segment.io javascript 发布失败并出现 CORS 错误

arrays - 通过动态构造的变量名称间接分配给bash数组变量

javascript - 如何限制JQuery selectable-helper的范围?

python - 添加不同大小的二进制数组

ruby-on-rails - Rails PostgreSQL 数组无法迭代

r - 在 R 数据框中,如何广播与维度相对应的列?

eclipse - 在Eclipse中进行Subversion合并的正确方法是什么?

javascript - 引用网址的查询字符串

php - 使用 Zend Framework 或 Javascript 进行浏览器检测