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

JavaScript数组过滤返回空数组问题求助——合并对象数组后filter方法未得到预期结果

问题排查与解决方案

核心问题分析

你得到空数组的原因有两个关键错误:

  1. 过滤条件逻辑矛盾:你的filter回调里写了item.class_1 === 10 && item.class_1 === 1——一个数值不可能同时等于10和1,这个条件永远为false,自然过滤不出任何结果。
  2. 数组合并不完整:你合并数组时只包含了Array_1、Array_2、Array_3,但预期结果里需要的Array_4没被加入,就算条件改对了也拿不到John的对象。

修正后的代码

// console.log("Testing Merging of data");
const Array_1 = [{ class_1: 4, HeadTeacher: "Mrs Joe" }];
const Array_2 = [{ class_1: 10, HeadTeacher: "Loveth" }];
const Array_3 = [{ class_1: 1, HeadTeacher: "Itunu" }];
const Array_4 = [{ class_1: 1, HeadTeacher: "John" }];
// 合并所有需要的目标数组
const result = [...Array_1, ...Array_2, ...Array_3, ...Array_4];
// 修正过滤条件:匹配class_1等于1的对象
const Final = result.filter((item) => {
  return item.class_1 === 1;
});
console.log(Final);
// 输出:[{ class_1: 1, HeadTeacher: "Itunu" }, { class_1: 1, HeadTeacher: "John" }]

额外优化建议

  • 如果之后需要匹配多个值(比如同时匹配1和10),可以用includes简化逻辑:[1,10].includes(item.class_1)
  • 过滤回调如果只有返回语句,还可以进一步简写:result.filter(item => item.class_1 === 1)

内容的提问来源于stack exchange,提问作者simple life

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:08:11