JavaScript数组过滤返回空数组问题求助——合并对象数组后filter方法未得到预期结果
问题排查与解决方案
核心问题分析
你得到空数组的原因有两个关键错误:
- 过滤条件逻辑矛盾:你的
filter回调里写了item.class_1 === 10 && item.class_1 === 1——一个数值不可能同时等于10和1,这个条件永远为false,自然过滤不出任何结果。 - 数组合并不完整:你合并数组时只包含了
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
相关产品推荐
相关产品推荐

