You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JS中如何借助另一个数组实现对象数组的过滤?

数组过滤问题解决方案

原有代码问题分析

  • 方法1核心问题:forEach方法本身没有返回值,且你没有在filter的回调函数中返回布尔判断结果,filter无法识别是否要保留当前元素
  • 方法2核心问题:用for...in遍历数组时拿到的j是数组的索引而非元素值,同时同样缺少给filter的返回值

正确实现代码

你偏好使用filter的话,搭配includes方法就能简洁实现需求,逻辑是保留a属性值不在my_array中的对象:

var ob_array = [
  {'a' : 1, 'col_2' : 'abc'},
  {'a' : 2, 'col_2' : 'xyz'},
  {'a' : 3, 'col_2' : 'jkl'}
];
var my_array = [1, 2];
// 过滤逻辑
var filteredArray = ob_array.filter(item => !my_array.includes(item.a));

执行后filteredArray的值就是你预期的结果:

[{'a' : 3, 'col_2' : 'jkl'}]

如果需要兼容不支持includes的旧运行环境,可以用indexOf替代:

var filteredArray = ob_array.filter(function(item) {
  return my_array.indexOf(item.a) === -1;
});

内容的提问来源于stack exchange,提问作者Aztec-3x5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:27:01