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

JavaScript中flatMap处理API响应数据失效问题求助

问题解决:筛选API返回数据中符合条件的人员对象

问题诊断

你的代码核心问题在于处理API返回的JSON对象时,错误使用了Array.from(json)。API返回的json是包含Pagination和People属性的单个对象,而非数组。Array.from(json)会将对象的键名(如"Pagination"、"People")转为数组元素,后续flatMap(o => o.People)无法获取到实际人员列表,导致people数组为空,筛选逻辑根本没机会执行。

修正方案

直接从JSON对象中提取People数组即可,同时优化筛选逻辑的可读性:

// 假设前置fetch逻辑已正确获取API数据
.then((response) => response.json())
.then((json) => {
    // 直接提取人员数组,无需多余转换
    const people = json.People;
    return people.filter(person => {
        const employer = person?.organization?.company?.employer;
        
        // 若employer不存在或非字符串,保留该条目
        if (!employer || typeof employer !== 'string') {
            return true;
        }
        // 检查employer是否不包含任何过滤关键词
        return !filteredEmployers.some(filterStr => employer.includes(filterStr));
    });
})

代码说明

  1. 获取人员列表:通过json.People直接拿到API返回的人员数组,避免不必要的数组转换操作。
  2. 筛选逻辑优化:
    • 用!filteredEmployers.some(...)替代原every写法,逻辑更直观:只要有一个过滤关键词匹配,就排除该条目;反之则保留。
    • 增加!employer判断,覆盖employer为null或undefined的边界情况,处理更严谨。

验证结果

用你提供的API响应数据测试,修正后的代码会返回期望结果:

[
  {
    name: 'TJ',
    job: 'Software Engineer',
    organization: { company: { employer: 'amazon', department: 'IT' } },
    location: { city: 'Boston', state: 'Massachusetts' }
  },
  {
    name: 'Dominique',
    job: 'CEO',
    organization: { company: { employer: 'IBM', department: 'IT' } },
    city: 'Seattle',
    state: 'Washington'
  }
]

内容的提问来源于stack exchange,提问作者e-driver1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:25:36