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

基于父级值在嵌套数组中添加新键值对

问题描述

我有一个包含问题的数组,每个问题对象里有可选选项列表和正确答案字符串。我需要给每个选项对象添加一个correct_answer字段,用true/false标记该选项是否为正确答案。尝试使用.map()和.forEach()方法,但不知道如何在处理选项时访问对应的正确答案值。

原数据

const data = [
    {
        "question": "数学常数e的近似值是多少?",
        "options": [
            {
                "option": "1.41",
            },
            {
                "option": "1.62",
            },
            {
                "option": "2.72",
            },
            {
                "option": "3.14",
            }
        ],
        "correct_answer": "2.72"
    },
    {
        "question": "动画《一拳超人》的主角叫什么名字?",
        "options": [
            {
                "option": "杰诺斯",
            },
            {
                "option": "KING",
            },
            {
                "option": "埼玉",
            },
            {
                "option": "索尼克",
            }
        ],
        "correct_answer": "埼玉"
    }
]

期望结果

const data = [
    {
        "question": "数学常数e的近似值是多少?",
        "options": [
            {
                "option": "1.41",
                "correct_answer": false,
            },
            {
                "option": "1.62",
                "correct_answer": false,
            },
            {
                "option": "2.72",
                "correct_answer": true,
            },
            {
                "option": "3.14",
                "correct_answer": false,
            }
        ],
        "correct_answer": "2.72"
    },
    {
        "question": "动画《一拳超人》的主角叫什么名字?",
        "options": [
            {
                "option": "杰诺斯",
                "correct_answer": false,
            },
            {
                "option": "KING",
                "correct_answer": false,
            },
            {
                "option": "埼玉",
                "correct_answer": true,
            },
            {
                "option": "索尼克",
                "correct_answer": false,
            }
        ],
        "correct_answer": "埼玉"
    }
]

解决方案

方法1:使用.forEach()修改原数组

.forEach()会直接遍历并修改原数组元素,适合不需要保留原数据的场景:

data.forEach(question => {
    const correctAnswer = question.correct_answer;
    question.options.forEach(option => {
        option.correct_answer = option.option === correctAnswer;
    });
});

方法2:使用.map()返回新数组

如果需要保留原数组不变,用.map()生成新数组,所有对象均为浅拷贝后的新实例:

const newData = data.map(question => ({
    ...question,
    options: question.options.map(option => ({
        ...option,
        correct_answer: option.option === question.correct_answer
    }))
}));

核心逻辑说明

遍历每个问题时,直接访问当前问题的correct_answer属性,再遍历该问题的options数组,将每个选项的option值与正确答案做全等比较,把结果赋值给新添加的correct_answer字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:55:20