如何将指定格式的对象转换为特定结构的数组?
解决方法
首先你提供的原始对象存在语法错误,incorrect部分的写法不符合JavaScript规范,需要先修正为合法结构。下面分两种常见情况给出转换代码:
情况1:incorrect是数组格式
如果原始数据的incorrect是数组(更匹配索引式写法),可以这样转换:
// 修正后的原始数据 const originalData = { correct: "Warren Harding", incorrect: ["Theodore Roosevelt", "Andrew Jackson "] }; // 执行转换 const answerOptions = [ // 生成正确选项的对象 { answerText: originalData.correct, isCorrect: true }, // 遍历错误选项,生成对应对象并去除多余空格 ...originalData.incorrect.map(item => ({ answerText: item.trim(), isCorrect: false })) ];
情况2:incorrect是键值对对象格式
如果原始数据的incorrect是带索引的对象,用Object.values()提取值后再转换:
// 修正后的原始数据 const originalData = { correct: "Warren Harding", incorrect: { 0: "Theodore Roosevelt", 1: "Andrew Jackson " } }; // 执行转换 const answerOptions = [ { answerText: originalData.correct, isCorrect: true }, ...Object.values(originalData.incorrect).map(item => ({ answerText: item.trim(), isCorrect: false })) ];
转换说明
- 先创建正确选项的对象,标记
isCorrect: true - 用
map方法遍历错误选项,将每个元素转换成指定格式的对象,同时用trim()处理了"Andrew Jackson "末尾的多余空格 - 扩展运算符
...用于将遍历生成的错误选项数组合并到最终数组中
执行后answerOptions的结构完全符合需求:
[ { answerText: "Warren Harding", isCorrect: true }, { answerText: "Theodore Roosevelt", isCorrect: false }, { answerText: "Andrew Jackson", isCorrect: false } ]
内容的提问来源于stack exchange,提问作者Dan Briggs
相关产品推荐
相关产品推荐

