如何从API获取的对象数组中提取correct_answer属性并生成目标数组(含错误代码修正方案)
如何从API返回的数组中提取正确答案组成新数组?
首先咱们先拆解下你原代码里的问题:
- 循环条件写了
i < 4,但你的apipresave数组只有3个元素,这会导致最后一次循环访问apipresave[3]时触发undefined错误; - 你把
return correct_answer_array放在了循环内部,这意味着第一次循环执行完就直接返回数组了,后面的元素根本没机会被处理,所以只能得到第一个正确答案。
下面给你几种靠谱的实现方式,按需选择:
方法1:修复你的for循环
调整循环条件并把return移到循环外面,确保所有元素都被遍历:
function correct_answer_array_func (){ const correct_answer_array = []; // 用数组长度作为循环上限,避免硬编码数字 for(let i = 0 ; i < apipresave.length; i++){ correct_answer_array.push(apipresave[i].correct_answer); } // 循环完成后再返回数组 return correct_answer_array; }
方法2:使用map方法(推荐)
map是JavaScript数组专门用于转换数组元素的方法,写法简洁且可读性拉满:
// 一行代码搞定,不需要额外函数(如果不需要封装的话) const correct_answer_array = apipresave.map(item => item.correct_answer); // 如果需要封装成函数: function correct_answer_array_func (){ return apipresave.map(item => item.correct_answer); }
map会自动遍历原数组的每个元素,把每个元素的correct_answer属性值收集起来,直接返回符合要求的新数组,完美匹配你的需求。
方法3:使用forEach遍历
和for循环逻辑类似,但写法更清爽:
const correct_answer_array = []; apipresave.forEach(item => { correct_answer_array.push(item.correct_answer); });
内容的提问来源于stack exchange,提问作者alireza
相关产品推荐
相关产品推荐

