js 中对一个对象数组过滤, 过滤条件是每一个对象的某个属性值在不在另外一个数组对象中
时间: 2024-10-10 21:15:41 浏览: 36
在JavaScript中,如果你有一个对象数组,并想要基于每个对象的特定属性值来过滤,你可以结合 `Array.prototype.filter()` 方法和数组的 `includes()` 方法来实现。假设你有一个对象数组 `objArray` 和一个用于比较的属性名 `propName`,以及另一个数组 `excludeArray`,你可以这样做:
```javascript
function filterObjects(objArray, propName, excludeArray) {
return objArray.filter(obj => {
const value = obj[propName]; // 获取当前对象的指定属性值
return excludeArray.indexOf(value) === -1; // 判断属性值是否不在排除数组中
});
}
// 示例
const objArray = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 3, name: 'C' },
{ id: 4, name: 'D' },
];
const excludeArray = ['B', 'D'];
const filteredArray = filterObjects(objArray, 'name', excludeArray);
console.log(filteredArray); // 输出:[ { id: 1, name: 'A' }, { id: 3, name: 'C' } ]
```
这个 `filterObjects` 函数会返回一个新的对象数组,其中只包含那些其指定属性 `propName` 的值不在 `excludeArray` 中的对象。
阅读全文