javascript - 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' ]
解决方案
您可以使用reduce和find轻松实现此结果。
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);
推荐阅读
- angular - Protractor 将 api 调用重定向到本地运行的后端
- linux - 使用 Bash/Shell 遍历固定数量的文件
- python - 如何运行 cloc 来检查目录的所有 python 文件,包括子目录,但忽略任何包含迁移一词的子目录?
- python - 如何为数值变量定义色调类别编号?
- node.js - Heroku 部署(node.js 作为后端)始终给出错误
- javascript - 禁用包含相同属性的 div 标签
- python - 根据其他列的列表从列中删除子字符串
- java - 无法删除子实体 JPA
- python-3.x - IntegrityError:唯一约束失败:auth_user.username - Django
- javascript - moment.js,比较 diff 与天与年