首页 > 解决方案 > 我有 2 个数组,如何将它们合并为相同长度但不同的索引

问题描述

我在一个对象数组中有 2 个数组,它们的长度相同,如何合并它们并且值应该被替换(数组有空值)。

对象

obj=[ [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],[
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]]

在上面的代码中,array1 在第 23 个索引处具有值,array2 在第 22 个索引处具有值,并且两个数组中的其余值都为空,并且两个数组具有相同的长度。所以我需要一个长度相同的数组,在第 22 和第 23 索引中我需要各自的值,其余值应该为空。输出(结果)数组应该类似于下面的数组。

结果

result= [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]

标签: javascriptarrays

解决方案


假设您采用要合并的最后一次出现的子对象的值。

obj = [ [ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "YES", null, null, null, null, null, null, null, ], [ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "YES", null, null, null, null, null, null, null, null, ], ];

const mergeObj = obj.reduce((acc, cur) => {
  return acc.map((el, i) => cur[i] ?? el);
});

console.log(mergeObj);


推荐阅读