【发布时间】:2015-07-26 13:24:48
【问题描述】:
我有点紧张。 请查看从 Wikipedia 获取的此对象。
object fetched from Wikipedia API 我正在将 Wiki 中的数据映射到我的对象上;具体来说,我正在映射缩略图。
为此,我使用缩略图属性扩展我的对象。 比如说,我有一个属性为“id”、“name”的节点,我想用“thumbnail”对其进行扩展。
我正在努力获取由页面的数字 id 形成的键的值。
例如,我想获取对象: ...pages.6021858.thumbnail {}
我正在这样做:
fetchWikipediaDecorator(wikipedia_page_id, function(data){
var e = wikipedia_page_id,
f = e.toString(),
infoPage = data.query.pages;
console.log('infoPage',Object.keys(infoPage)[0]);
console.log('infoPage',infoPage.f);
console.log('infoPage',infoPage.e);
console.log('infoPage',infoPage[e]);
console.log('infoPage',infoPage[f]);
console.log('infoPage',data.query);
});
我不明白为什么:
data.query.pages
没问题 但是
data.query.pages.162510
未定义。
console.log('infoPage',Object.keys(infoPage)[0]);
正确报告密钥“162510” 所有其他情况,未定义:
infoPage 89513
infoPage undefined
infoPage undefined
infoPage undefined
infoPage undefined
我试图通过数字、字符串、数组索引来调用它们... 我确定我错过了 smtg - 你能帮我解释一下错误的类型吗?
【问题讨论】:
-
wikipedia_page_id和对象键是否相同?你能创造一个小提琴吗?infoPage[e]和infoPage[f]应该可以正常工作,除非Object.keys(infoPage)[0]与wikipedia_page_id不同。 -
您是否检查过
data.query.pages以查看密钥162510是否确实存在? -
您尝试过 data.query.pages['162510'] 吗? (带引号的数组索引)
-
Tks @SebastianNette : wikipedia_page_id != Object.keys(infoPage)[0] :/ 这很奇怪:给定错误的 pageid,该函数不应该获取正确的页面。该函数嵌套在 ajax 回调中。伪代码:
getNodeChildren = function(..) { $.ajax ( success: function(data) { var children = data.children; for c in children: wiki_page_id = c.id fetchWikipediaDecorator(wiki_page_id,callback) // return elements of wiki page_id from api wikipedia )Wiki_page_id 在循环期间保持不变,但嵌套函数返回不同的结果。这可能是一个异步问题吗?
标签: javascript object key undefined