如何遍历页面键唯一的Wikipedia API返回结果(适配Noodl.net)
修正Wikipedia API结果遍历代码方案
原代码问题点
Response.content.query.pages是对象而非数组,直接用length循环完全无效resultPagesArrayEntries.entries();语法错误,未正确调用Object.entries()方法- 循环中错误将索引
i当作页面对象,导致i.names等属性获取失败 - API返回数据里没有
names/urls/imageUrls/descriptions这些字段,需对应到实际返回的title/extract,并手动生成页面URL
修正后的代码
// 从API响应中取出pages对象 const wikiPagesObj = Response.content.query.pages; // 将对象转成键值对数组,方便遍历 const pagesEntries = Object.entries(wikiPagesObj); const wikiPagesArray = []; // 遍历每个页面条目 for (const [pageId, pageData] of pagesEntries) { // 构造符合需求的自定义对象 const pageObj = Noodl.Object.create({ name: pageData.title, // 对应API里的title字段 url: `https://en.wikipedia.org/?curid=${pageData.pageid}`, // 用pageid拼接维基百科页面URL description: pageData.extract, // 对应API里的extract字段(页面摘要) imageUrl: null // 当前API返回无图片数据,若需要需额外加请求参数获取 }); wikiPagesArray.push(pageObj); } // 输出处理后的数组 Outputs.resultPages = wikiPagesArray;
代码说明
- 用
Object.entries()把pages对象转成[pageId, pageData]格式的数组,解决对象无法按索引遍历的问题 - 直接解构遍历数组里的键值对,拿到每个页面的原始数据
- 映射API实际返回的字段:把
title作为名称,extract作为描述,通过pageid拼接标准维基百科页面地址 - 如果需要图片URL,得在API请求里添加
prop=pageimages参数,当前返回数据没包含该字段,暂时设为null留待后续扩展
内容的提问来源于stack exchange,提问作者Red Ace
相关产品推荐
相关产品推荐

