【问题标题】:Merge Two Array of Object based on its Index (Without Key) Javascript基于其索引(无键)Javascript合并两个对象数组
【发布时间】:2021-02-26 09:56:48
【问题描述】:

我有一个问题让我卡住了一段时间。我正在使用 Javascript。 我有两个对象数组,如下所示:

第一个数组:

[ { 红色”, 材质:“碳” }, { 颜色:黑色”, 材质:“铁” } ]

第二个数组

[ [ { 发布年份:2000 }, { 价格:3000 }, { 建造年份:1998 } ], [ { 发布年份:1996 }, { 价格:5000 }, { 建造年份:1990 } ] ]

我需要将这些对象数组合并成这样:

[ { 红色”, 材料:“碳”, year_released: 2000, 价格:3000, 建造年份:1998 }, { 颜色:黑色”, 材料:“铁”, year_released: 1996, 价格:5000, 建造年份:1990 } ]

请帮我解决这个问题。非常感谢。

【问题讨论】:

  • 在您的预期输出中,{ color: "Black", material: "iron", year_released: 1996, price: 5000, year_built: 1990 } 的输入来自哪里?就此而言,spoiler 是第一个数组中的 spoiler 和输出中的 material?我想你会先清理你的数据。

标签: javascript arrays merge


【解决方案1】:

您需要使用Object.assign() 来合并对象,并根据您的要求 遍历目标和源对象数组。

const targets = [ { color: "Red", spoiler: "carbon" }, { color: "Blue", spoiler: "oxygen" } ];
const sources = [ [ { year_released: 2000 }, { price: 3000 }, { year_built: 1998 } ], [ { year_released: 1996 }, { price: 5000 }, { year_built: 1990  } ] ];

const returnedTargets = targets.map((target, i) => 
  Object.assign({}, target, ...sources[i])
);

console.log(returnedTargets);

// console.log(target, sources, returnedTargets);
// [{"color":"Red","spoiler":"carbon"},{"color":"Blue","spoiler":"oxygen"}]
// [[{"year_released":2000},{"price":3000},{"year_built":1998}],[{"year_released":1996},{"price":5000},{"year_built":1990}]]
// [{"color":"Red","spoiler":"carbon","year_released":2000,"price":3000,"year_built":1998},{"color":"Blue","spoiler":"oxygen","year_released":1996,"price":5000,"year_built":1990}]

【讨论】:

    【解决方案2】:

    您可以使用扩展运算符:

    const arr1 = [{ color: "Red", spoiler: "carbon" }];
    const arr2 = [[ { year_released: 2000 }, { price: 3000 }, { year_built: 1998 } ]];
    console.log({ ...Object.assign({}, ...arr1), ...Object.assign({}, ...arr2[0]) });

    【讨论】:

      猜你喜欢
      • 2015-06-08
      • 1970-01-01
      • 2018-04-01
      • 2021-09-19
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      相关资源
      最近更新 更多