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

多数组对象映射匹配问题:如何正确提取对应type与status字段

修正数组关联匹配的字段提取问题

修正后的完整代码

const Users =[{"id":"1","name":"Ben"},{"id":"2","name":"Khloe"},{"id":"3","name":"Ayra"}];
const Connects = [{userId: "1", status:"pending", type: 'skipped'}, {userId: "3", status:"pending", type: 'invited'}];

// 将每个userId对应的连接信息存储为对象,而非数组
const connectMap = Connects.reduce((map, { userId, type, status }) => {
  return map.set(userId, { type, status });
}, new Map())

const array = Users.map(({ id, name }) => {
  // 解构获取type和status,无匹配时设为空字符串
  const { type = '', status = '' } = connectMap.get(id) || {};
  return {
    name,
    type,
    status
  }
})

console.info(array)

问题根源

原代码在构建connectMap时,将type和status作为独立元素push到数组中,导致后续无法区分两个字段的对应关系,最终type和status都输出了数组拼接后的混合值。

修正逻辑

  1. 调整映射结构:reduce阶段不再用数组存储,而是直接把每个userId对应的type和status封装成对象存入Map,保留字段的对应关系。
  2. 精准提取字段:遍历Users时,通过解构赋值从Map中取出对应对象的type和status,并设置默认空字符串处理无匹配的用户数据。

输出结果

[
  { name: 'Ben', type: 'skipped', status: 'pending' },
  { name: 'Khloe', type: '', status: '' },
  { name: 'Ayra', type: 'invited', status: 'pending' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:33:47