在javascript中合并两个数组,但忽略通用值

时间:2019-06-25 06:11:05

标签: javascript

我有两个数组。

数组1: 一个数组就是对象数组:

arr1 = [{id:1, age:10}, {id:2, age:12}]

数组2: 第二个数组只是一个id数组:

arr2 = [3,4,1,5,2]

我的目标是合并两个数组,但首先从第一个数组中获取对象,然后将第二个数组中的元素加入其中,仅获取arr1中尚不存在的id。第二个数组元素需要转换为对象。上面示例的最终结果将是:

newArray = [{id:1, age:10}, {id:2, age:12}, {id:3}, {id:4}, {id:5}]

鉴于对象和整数作为数组项的混合,我对如何执行此操作感到非常困惑。

2 个答案:

答案 0 :(得分:0)

您想要做的是循环arr2并针对该数组中的每个条目(整数),检查arr1是否包含对象,其中id属性等于该条目在arr2中处理。如果不是这种情况,则可以向push添加(arr1)新元素,其中id属性设置为您从arr2处理的元素的值。

您可以使用一些类似的JavaScript来做到这一点:

let arr1 = [{id:1, age:10}, {id:2, age:12}]
let arr2 = [3,4,1,5,2]

for (var i = 0; i < arr2.length; i++) {
  let id = arr2[i];
  if (!arr1.find(x => x.id === id)) {
    arr1.push({ id: id });
  }
}

console.log(arr1)

答案 1 :(得分:-1)

减少: 您以arr1为基础,然后在arr2中的每个键上运行,如果数组没有具有相同键的some对象,则添加具有新ID的新对象。

const arr1 = [{ id: 1, age: 10 }, { id: 2, age: 12 }]
const arr2 = [3, 4, 1, 5, 2]

console.log(arr2.reduce((p,c) => (!p.some(x => x.id == c) && p.push({id:c}), p), arr1))