【问题标题】:How to merge 2 array of Objects?如何合并2个对象数组?
【发布时间】:2021-07-16 13:47:35
【问题描述】:

我有 2 个对象数组的以下代码,我喜欢它的合并方式是:

let arrofObj1 = [
  {
    apple: 17,
    mango: 15,
  },
  {
    apple: 20,
    mango: 29,
  },
];

let arrofObj2 = [
  {
    banana: 60,
    pear: 19,
  },
  {
    banana: 50,
    pear: 39,
  },
];

let outPutIwant = [
  {
    apple: 17,
    mango: 15,
    banana: 60,
    pear: 19,
  },
  {
    apple: 20,
    mango: 29,
    banana: 50,
    pear: 39,
  },
];


注意:在添加之前,每个数组中可能有超过 2 个对象,但这是我希望它们添加的方式。谁能告诉我我该怎么做?提前致谢

【问题讨论】:

  • 您可以改进您的问题,显示您尝试过的代码

标签: javascript


【解决方案1】:

您可以循环遍历arrofObj1 中的每个项目并获取arrofObj2 中相同索引处的对象,然后使用Object.assign() 复制所有可枚举的属性。

let arrofObj1 = [{
    apple: 17,
    mango: 15
  },
  {
    apple: 20,
    mango: 29
  }
]

let arrofObj2 = [{
    banana: 60,
    pear: 19
  },
  {
    banana: 50,
    pear: 39
  }
]


arrofObj1.forEach((e, i)=>Object.assign(e, arrofObj2[i]))
console.log(arrofObj1);

【讨论】:

    【解决方案2】:

    您可以创建这样的函数。请注意,此函数假定您的两个数组各自包含相同数量的对象。

    var arrofObj1 = [
      {
        apple: 17,
        mango: 15,
      },
      {
        apple: 20,
        mango: 29,
      },
    ];
    
    var arrofObj2 = [
      {
        banana: 60,
        pear: 19,
      },
      {
        banana: 50,
        pear: 39,
      },
    ];
    
    
    function mergeByPosition(arr1, arr2) {
        let arrResult = [];
        for(let i = 0; i < arr1.length; i++) {
            const objResult = { ...arr1[i], ...arr2[i] };
            arrResult.push(objResult);
        }
        return arrResult;
    }
    
    console.log(mergeByPosition(arrofObj1, arrofObj2));

    【讨论】:

      【解决方案3】:
      function merge(arr1, arr2) {
        return arr1.map((item, index) => {
          return { ...item, ...arr2[index] };
        });
      }
      

      【讨论】:

        【解决方案4】:

        这是一个非常简单的映射和合并问题。

        const result = arrofObj1.map((obj, index) => ({
          ...obj,
          ...arrofObj2[index]
        }))
        

        【讨论】:

          【解决方案5】:

          这是一种方法:

          const outPutIwant =
            arrofObj1.map((a, i) =>
              Object.assign({}, a, arrofObj2[i])
            );
          

          这会循环arrofObj1(使用Array.map),并且对于每个这样的项目a,使用Object.assign复制其内容并从arrofObj2分配相应的项目i

          【讨论】:

            猜你喜欢
            • 2011-11-01
            • 1970-01-01
            • 2019-12-20
            • 2020-08-19
            • 2019-09-04
            • 2019-12-11
            • 1970-01-01
            • 1970-01-01
            • 2022-01-04
            相关资源
            最近更新 更多