【问题标题】:merge two array of objects with javascript用javascript合并两个对象数组
【发布时间】:2019-12-02 14:16:03
【问题描述】:

我有这 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); 

【问题讨论】:

    标签: javascript arrays json object merge


    【解决方案1】:

    可能是这样的:

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

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

    【讨论】:

    • 请确保您可以很好地修改 目标 object。否则,您将需要 Object.assign({}, object, listePlayliste[index]) 以不修改原始 object
    【解决方案2】:

    使用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);

    【讨论】:

      【解决方案3】:

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

      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代码sn-p:

      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);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 2021-03-08
        • 1970-01-01
        • 2019-09-26
        • 1970-01-01
        相关资源
        最近更新 更多