javascript - 通过比较具有不同元素的两个对象数组来过滤和删除项目
问题描述
我有两个数组
arr1 = [{path: "path1"}, {path: "path2"}];
arr2 = [{path: "path1"}];
首先,我想通过比较两个数组并操作第一个数组或通过删除该项来覆盖它来找到从 arr1 中删除的元素(在本例中为它的 path1 对象)。在这种情况下,预期的数组是
expArray = [{path: "path2"}]
我尝试过使用array.filter
方法。
var filteredElements = arr1 .filter(function(obj) {
return !arr2 .some(function(obj2) {
return obj.Path === obj2.Path;
});
});
但它只给出不同的元素列表,但不支持从数组中删除元素。有没有办法使用下划线或传统方式做到这一点?
解决方案
你有一个错字Path
vs path
。该代码适用于此更改。
var arr1 = [{ path: "path1" }, { path: "path2" }],
arr2 = [{ path: "path1" }],
filteredElements = arr1.filter(function(obj) {
return !arr2.some(function(obj2) {
return obj.path === obj2.path;
// ^ ^
});
});
console.log(filteredElements);
如果你喜欢变异arr1
,你可以拼接不需要的元素,因为这会改变长度,你可以从最后迭代。
var arr1 = [{ path: "path1" }, { path: "path2" }],
arr2 = [{ path: "path1" }],
i = arr1.length;
while (i--) {
if (arr2.some(({ path }) => arr1[i].path === path)) {
arr1.splice(i, 1);
}
}
console.log(arr1);
推荐阅读
- python - PyInstaller filenotfounderror 并且仅在作为 systemd 服务运行时无法导入名称
- python-3.x - 将布尔参数传递给夹具
- python - OpenWeatherMap API,我如何获取温度?
- graphql - 如何使用 Camel GraphQL 组件替换 GraphQL 查询中的变量
- json - 无法将 animation.json 文件加载到我的颤振项目中
- laravel - Eloquent 查询按问题排序:始终返回 SQLSTATE[23000]:违反完整性约束:1052
- javascript - shadow dom 中子元素的使用
是否有任何约束阻止
<thead>
,<tbody>
等<tr>
插入影子 DOM?给定以下示例:
<script> class Table extends HTMLElement { constructor() { super();
- awk - 如果pattern匹配两行,如何融合两行的信息?
- javascript - React Javascript,在未定义的数组中找到并跳过它
- android-studio - Android 工作室,gradle 分发