用JavaScript合并两个对象数组

时间:2019-07-24 12:14:37

标签: javascript arrays json object merge

我有2个这样的对象数组:

objects [ { countMedias: 2 },
  { countMedias: 1 },
  { countMedias: 3 },
  { countMedias: 1 },
  { countMedias: 2 } ]
listePlayliste [ { nom_playlist: 'bbbb' },
  { nom_playlist: 'ccc' },
  { nom_playlist: 'aaaa' },
  { nom_playlist: 'xxxx' },
  { nom_playlist: 'resttttttttt' } ]

我想将它们融合在一起以获得这样的内容:

Result [ { nom_playlist: 'bbbb', countMedias: 2 },
  { nom_playlist: 'ccc', countMedias: 1  },
  { nom_playlist: 'aaaa', countMedias: 3 },
  { nom_playlist: 'xxxx', countMedias: 1 },
  { nom_playlist: 'resttttttttt', countMedias: 2 } ]

我尝试了这个,但实际上并不是我想要的:

    Array.prototype.push.apply(json,objects); 

3 个答案:

答案 0 :(得分:2)

也许是这样的:

objects.map((object, index) => Object.assign(object, listePlayliste[index]))

但是不要尝试在较大的数组大小上使用它。没那么快。

答案 1 :(得分:1)

使用map。遍历数组之一并返回对象,该对象使用索引保存其他数组中的当前obj和对象。

const objects = [{
    countMedias: 2
  },
  {
    countMedias: 1
  },
  {
    countMedias: 3
  },
  {
    countMedias: 1
  },
  {
    countMedias: 2
  }
];

const listePlayliste = [{
    nom_playlist: 'bbbb'
  },
  {
    nom_playlist: 'ccc'
  },
  {
    nom_playlist: 'aaaa'
  },
  {
    nom_playlist: 'xxxx'
  },
  {
    nom_playlist: 'resttttttttt'
  }
];

const output = objects.map((obj, i) => ({
  ...obj,
  ...listePlayliste[i]
}));
console.log(output);

答案 2 :(得分:0)

类似于objects.map(),for循环也可以使用,但是请注意,Object.assign()将修改原始数组。 PFB代码段:

objects = [ { countMedias: 2 },
  { countMedias: 1 },
  { countMedias: 3 },
  { countMedias: 1 },
  { countMedias: 2 } ];
listePlayliste = [ { nom_playlist: 'bbbb' },
  { nom_playlist: 'ccc' },
  { nom_playlist: 'aaaa' },
  { nom_playlist: 'xxxx' },
  { nom_playlist: 'resttttttttt' } ];


for (let i=0; i<objects.length; i++) {
  Object.assign(objects[i], listePlayliste[i]);
}

console.log(objects);

为避免修改原始数组,我们可以使用Spread syntax。 PFB代码段:

objects = [ { countMedias: 2 },
  { countMedias: 1 },
  { countMedias: 3 },
  { countMedias: 1 },
  { countMedias: 2 } ];
listePlayliste = [ { nom_playlist: 'bbbb' },
  { nom_playlist: 'ccc' },
  { nom_playlist: 'aaaa' },
  { nom_playlist: 'xxxx' },
  { nom_playlist: 'resttttttttt' } ];

var result = [];
for (let i=0; i<objects.length; i++) {
  result.push({ ...objects[i], ...listePlayliste[i] })
}

console.log(result);
console.log(objects);