从对象获取密钥javascript返回undefined

时间:2015-07-26 13:24:48

标签: javascript object key undefined

我有点紧张。 请看一下从维基百科中获取的这个对象。

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 - 你能帮忙解释一下错误的类型吗?

1 个答案:

答案 0 :(得分:0)

我不确定究竟是什么问题,但我认为我把键作为数组索引混淆了。

@Sebastian Nette提出了一个正确答案:

Object.keys(data.query.pages);

因此,一旦获取了数据,就会产生一个回调:

function myCallback(data) {
  var key = Object.keys(data.query.pages);
  return data.query.pages[key]
};

将返回对象[key]