JS 怎么判断一个数组中的对象的某个属性的值是否在另一个数组的对象的属性 并且删除 对象
时间: 2024-05-06 08:20:29 浏览: 70
详解Vue改变数组中对象的属性不重新渲染View的解决方案
可以使用数组的filter方法来过滤不符合条件的对象,再使用forEach方法遍历需要删除的对象并使用splice方法删除。
例如,假设有两个数组arr1和arr2,arr1中的对象有属性id,arr2中的对象有属性parentId,需要判断arr1中的对象的id是否在arr2中的对象的parentId中,如果是则删除该对象。
代码实现如下:
```javascript
var arr1 = [
{ id: 1, name: 'obj1' },
{ id: 2, name: 'obj2' },
{ id: 3, name: 'obj3' },
{ id: 4, name: 'obj4' }
];
var arr2 = [
{ parentId: 1, content: 'content1' },
{ parentId: 2, content: 'content2' },
{ parentId: 4, content: 'content4' }
];
arr1 = arr1.filter(function(item) {
// 如果arr2中有parentId等于item.id的对象,则删除该对象
var hasItem = arr2.some(function(item2) {
return item2.parentId === item.id;
});
return !hasItem;
});
arr2.forEach(function(item, index) {
// 如果arr1中有id等于item.parentId的对象,则删除该对象
var hasItem = arr1.some(function(item1) {
return item1.id === item.parentId;
});
if (hasItem) {
arr2.splice(index, 1);
}
});
console.log(arr1); // [{ id: 3, name: 'obj3' }]
console.log(arr2); // [{ parentId: 2, content: 'content2' }]
```
阅读全文