【问题标题】:fetching a keys from an object javascript return undefined从对象中获取键 javascript 返回未定义
【发布时间】: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


【解决方案1】:

我不确定到底是什么问题,但我认为我在作为数组索引的键之间混淆了。

@Sebastian Nette 提出了正确答案:

Object.keys(data.query.pages);

因此,一旦获取数据,回调如下:

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

将返回对象[key]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2017-07-08
    • 2013-09-24
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多