【问题标题】:How to loop through an object of objects?如何循环遍历对象的对象?
【发布时间】:2014-02-22 14:03:34
【问题描述】:

我正在尝试从使用 AngularJS 从Firebase 检索到的对象中获取一些数据。

对象看起来像这样(代码中的“feed_items”):

前 10 个对象看起来像:

所以我正在尝试如下循环:

function getUniqueFilters(feed_items) {    

    angular.forEach(feed_items, function(value, key){                  
        console.log(value);      
    });
}

console.log(value) 的输出是:

我不明白为什么我没有得到前 10 个对象中的任何一个,这些对象是我需要数据的对象。我如何获得这些?

提前致谢!

【问题讨论】:

  • 你确定每个对象的值不是一个函数吗?输出您的密钥并确保您得到您想要的或尝试value() 以查看函数是否返回您正在寻找的值。
  • 嗨@pedalpete,我已经更新了我的帖子以展示对象的外观。它们绝对不是函数。
  • 这很有趣 Teknotica。这应该没关系,但为了保持一致性,我建议你输出function(key, value) 而不是(value, key),因为这样更符合数据结构。话虽如此,你有没有输出key 的内容来看看返回的是什么?将(i){console.log(i) 作为forEach 的回调传递给你怎么样。我经常发现这些微小的变化会给你提示正在发生的事情。
  • 嗨@pedalpete 感谢您的回复。我发现了问题:当时数据仍然不可用。还是谢谢你!

标签: javascript angularjs loops object


【解决方案1】:

我的猜测是,当你使用console.log 时,请求仍未解决。

可能 firebase 在从服务器获取数据后填充对象。

console.log 是通过引用和异步的,因此您仍然可以在控制台中看到数据。

我不熟悉 firebase,但您可能应该寻找回调/承诺。

为了测试,我建议像这样停止执行:

console.log(object); 

debugger; // now check inside your console

【讨论】:

  • 感谢您的回答。你是对的,当添加调试器时,我可以看到数据仍然不存在。到时候我会尝试回电。感谢您的帮助!
【解决方案2】:

如果你尝试这样做会怎样:

function getUniqueFilters(feed_items) {    

    for(var i=0; i<10; i++){
       console.log(feed_items[i]);      
    }
}

【讨论】:

  • 感谢@STEVER - 请阅读下文,因为这显然是问题所在。
猜你喜欢
  • 1970-01-01
  • 2020-06-09
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 2017-06-12
  • 2015-10-31
  • 2014-11-30
相关资源
最近更新 更多