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

JavaScript按id匹配两个对象数组并返回对应title值

问题分析

你当前代码的返回结果不符合预期,核心是两个逻辑偏差:

  • map嵌套filter的写法会返回二维嵌套数组,结构为按用户分组的匹配专辑对象集合,不是扁平化的结果
  • 过滤完成后没有提取目标title字段,返回的是完整的专辑对象,不是你需要的字段值
正确实现

直接用flatMap处理匹配逻辑,过滤后提取title即可得到一维的目标值数组:

const usersData = [
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
  }
]

const albumsData = [
  {
    "userId": 1,
    "id": 1,
    "title": "FooBar"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "Trolololo"
  },
  {
    "userId": 3,
    "id": 3,
    "title": "omnis laborum odio"
  },
  {
    "userId": 4,
    "id": 4,
    "title": "non esse culpa molestiae omnis sed optio"
  }
]

const results = usersData.flatMap(({ id }) =>
  albumsData
    .filter(({ userId }) => id === userId)
    .map(item => item.title)
);

console.log(results);
// 运行输出:[ 'FooBar', 'Trolololo' ]
兼容写法

如果运行环境不支持flatMap,可以先做map再手动扁平化:

const results = [].concat(
  ...usersData.map(({ id }) =>
    albumsData
      .filter(({ userId }) => id === userId)
      .map(item => item.title)
  )
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:39:18