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

JavaScript匹配用户ID颜色码 为数组对象赋值对应颜色属性

实现方案

你原有代码存在两处问题:

  • Array.map 返回对象的语法错误,color 属性被写在了对象字面量外部,无法被正确添加到用户对象中
  • 未实现用户ID与颜色编码的匹配逻辑

可以直接通过字符串匹配+数组查找实现需求,完整可运行代码如下:

const users = [
  { id: 'u1pur33' },
  { id: 'u1ora29' }
]

const colors = [
  {color: 'purple', colorCode: 'pur'},
  {color: 'orange', colorCode: 'ora'},
  {color: 'black', colorCode: 'bla'},
  {color: 'pink', colorCode: 'pnk'}
]

const newUsers = users.map(user => {
  // 匹配ID中包含的颜色编码
  const currentColor = colors.find(item => user.id.includes(item.colorCode))
  return {
    ...user,
    color: currentColor?.color ?? ''
  }
})

执行后得到的newUsers结构完全符合预期:

[
  { id: 'u1pur33', color: 'purple' },
  { id: 'u1ora29', color: 'orange' }
]

提示:你给出的期望结果示例中第二行color: orange遗漏了字符串引号,属于语法错误,实际编写时需要补上。

如果处理的用户数据量较大,可以提前将颜色配置转换为键值对映射,减少遍历次数提升性能:

// 预生成编码-颜色名映射表
const colorCodeMap = new Map(colors.map(item => [item.colorCode, item.color]))
const newUsers = users.map(user => {
  let color = ''
  for (const [code, name] of colorCodeMap) {
    if (user.id.includes(code)) {
      color = name
      break
    }
  }
  return { ...user, color }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:18:19