首页 > 解决方案 > JavaScript - 比较两个数组并返回两个数组中都不存在的数组

问题描述

我想比较 2 个数组 arr1 和 arr2。如果 arr2 中不存在 arr1 的数组,那么我想要该数组的第一个元素。

const arr1 = [
  ["item 1", "item 1.1", "item 1.2"],
  ["item 2", "item 2.1", "item 2.2"],
  ["item 3", "item 3.1", "item 3.2"],
  ["item 4", "item 4.1", "item 4.2"],
];


const arr2 = [
  ["item 1", "item 1.1", "item 1.2"],
  ["item 2", "item 2.1", "item 2.2"],

];

const newArr = () => {
  return arr1.filter(arr => arr2.some(arr2 => arr2[0] != arr[0]))

};

console.log(newArr())

// Expected output [ 'item 3', 'item 4' ]

标签: javascript

解决方案


您可以使用reducefind轻松实现此结果。

const arr1 = [
  ["item 1", "item 1.1", "item 1.2"],
  ["item 2", "item 2.1", "item 2.2"],
  ["item 3", "item 3.1", "item 3.2"],
  ["item 4", "item 4.1", "item 4.2"],
];

const arr2 = [
  ["item 1", "item 1.1", "item 1.2"],
  ["item 2", "item 2.1", "item 2.2"],
];

const result = arr1.reduce((acc, curr) => {
  const [first] = curr;
  const isExist = arr2.find((nestedArray) => nestedArray[0] === first);
  if (!isExist) acc.push(first);
  return acc;
}, []);

console.log(result);


推荐阅读