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

如何在JavaScript中结合数组与对象数据生成目标数组?

解决方案:匹配答案ID生成目标数组

实现思路

  1. 先将所有问题的答案数据转换为答案ID到目标格式字符串的映射,减少重复遍历,提升查找效率
  2. 遍历存储选中答案ID的数组,通过映射表直接获取对应结果

代码实现

// 示例中的问题对象集合
const questions = [
  {
    id: "Q1",
    answers: [
      { id: "Q1A1", text: "Yes" },
      { id: "Q1A2", text: "No" }
    ]
  },
  {
    id: "Q2",
    answers: [
      { id: "Q2A1", text: "Test 1" },
      { id: "Q2A2", text: "Test 2" },
      { id: "Q2A3", text: "Test 3" },
      { id: "Q2A4", text: "Test 4" }
    ]
  }
];

// 存储选中答案ID的数组
const selectedAnswerIds = ["Q1A1", "Q2A3"];

// 构建答案ID到目标字符串的映射
const answerMap = {};
questions.forEach(question => {
  question.answers.forEach(answer => {
    answerMap[answer.id] = `${question.id}_${answer.text.replace(/\s/g, '')}`;
  });
});

// 生成目标数组
const result = selectedAnswerIds.map(id => answerMap[id]);

console.log(result); // 输出: ["Q1_Yes", "Q2_Test3"]

代码说明

  • 映射表构建:遍历每个问题的答案,把答案ID作为键,对应的问题ID_去除空格的答案文本作为值存入对象,后续查找时间复杂度为O(1)
  • 生成结果:用map方法遍历选中ID数组,直接从映射表中取值,高效生成目标数组
  • 空格处理:用replace(/\s/g, '')移除答案文本中的空格,保证结果和示例格式一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:23