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

JavaScript对象数组处理问题:合并pets数组结果异常求助

代码修复与错误说明

错误原因

  • 你的reduce回调逻辑a && b.pets完全不符合合并数组的需求:
    • 初始值[]在JS中属于真值,第一次执行时,a && b.pets会直接返回第一个人的pets数组;
    • 第二次执行时,a已经是第一个人的pets数组(依然是真值),所以直接返回第二个人的pets数组,最终仅保留最后一组数据。

修复后的代码

function petPower(people) {
    let rest = people.reduce((a, b) => a.concat(b.pets), []);
    return rest;
}

console.log(petPower([
    { name: 'Brain', pets: ['Doggy', 'Minuuy'] },
    { name: 'Carla', pets: ['Hammy', 'Hamishy'] },
]));

修复逻辑

利用Array.concat()方法,每次将当前对象的pets数组合并到累加器a中,初始值为空数组,最终得到所有宠物的合并数组。你也可以用扩展运算符实现相同效果:[...a, ...b.pets]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:26:52