合并22个各含1000元素的数组丢失数据,求修复方案
问题原因及修复方案
核心问题
你代码里的final_result是在while循环内部声明的,每次循环都会重新创建一个空数组,前21次循环添加的数据全部被丢弃,最后只保留了最后一次请求返回的结果(也就是你看到的502个元素)。
修复步骤
- 将
final_result的声明移到循环外部,确保整个循环过程中使用的是同一个数组实例。 - 每次循环将当前页的
result元素追加到final_result中。
修改后的完整代码
var pages = 22; var page = 0; // 把final_result移到循环外,初始化一次即可 var final_result = []; while (page != pages) { sails.log(`Getting page number ${page} of ${pages}`) var identifier_axios = { method: "get", url: `https://${address}///page=${page}`, proxy: false, }; var res_identifier = await axios(identifier_axios); var page_identifier = res_identifier.data.resourceList; var result = page_identifier.map(({ identifier }) => identifier); console.log("result length", result.length, "of page", page); // 追加当前页的结果到final_result final_result.push(...result); // 也可以用你之前的方式:Array.prototype.push.apply(final_result, result); page++; } console.log("final_result",final_result); console.log("final_result length", final_result.length)
额外验证建议
可以检查每次循环的result.length是否确实为1000,确认接口返回的数据是否符合预期,避免接口本身返回不足1000条的情况。
内容的提问来源于stack exchange,提问作者WhackTheWise
相关产品推荐
相关产品推荐

