Javascript,迭代两个对象数组并将一个项目从一个数组添加到另一个数组 "if it doesn' t 存在”

标签 javascript arrays

我有两个数组,一个包含字符串值,另一个包含整数值, 尽管这可能很愚蠢,但我陷入了困境,我需要一点帮助,我想遍历两者,如果 arr1 包含 arr2 中不存在的项目,它将被推送到 newArray

这是我尝试过的

const arr1 = [
  {id: 1, user_id: 1},
  {id: 2, user_id: 2},
  {id: 3, user_id: 3},
  {id: 4, user_id: 4},
]

const arr2 = [
  {id: '1', user_id: '1'},
  {id: '2', user_id: '2'},
  {id: '3', user_id: '3'},
]

const newArray = []

for (const x of arr1) {
  for (const y of arr2) {
    if (x.id !== +y.id) {
      newArray.push(x);
      break;
    }
  }
}

console.log(newArray);

这会添加 arr1 中的所有项目,而我想要推送到 newArray 的只是 arr1 中存在的项目,而不是 arr2 中存在的项目

提前致谢!

最佳答案

您可以选择 Set并过滤掉已知项目。

const
    arr1 = [{ id: 1, user_id: 1 }, { id: 2, user_id: 2 }, { id: 3, user_id: 3 }, { id: 4, user_id: 4 }],
    arr2 = [{ id: '1', user_id: '1' }, { id: '2', user_id: '2' }, { id: '3', user_id: '3' }],
    exists = new Set(arr2.map(({ id }) => +id)),
    missing = arr1.filter(({ id }) => !exists.has(id));

console.log(missing);

关于Javascript,迭代两个对象数组并将一个项目从一个数组添加到另一个数组 "if it doesn' t 存在”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56220194/

相关文章:

javascript - react : updating parent state from nested children component

javascript - 未捕获的类型错误 : Cannot set property 'position' of undefined

javascript - 链接 promise (.animate 和 setTimeout 之间的区别)

javascript - 添加事件监听器并在动态生成的元素上使用纯 JavaScript 获取点击值

python - 根据条件获取 NumPy 数组的连续元素组

arrays - Swift 4 - FlatMap 不会展平数组

javascript - 我可以直接更新所有元素的属性吗

java - 如何旋转打包到一维数组中的二维矩阵?

arrays - 如何在 Perl 中正确替换哈希数组中的值?

c# - 查找数组的最后一个索引