2014-01-30 108 views
1

我想从使用AngularJS从Firebase检索到的对象中获取一些数据。如何遍历对象的对象?

物体看起来像这样(以代码 “feed_items”):

enter image description here

而前10个对象的样子:

enter image description here

所以我试图做一个循环如下:

function getUniqueFilters(feed_items) {  

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

那的console.log(值)的输出是:

enter image description here

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

在此先感谢!

+1

你确定每个对象的值不是一个功能?输出你的密钥,并确保你找回你想要的或尝试'value()'来查看函数是否返回你正在查找的值。 – pedalpete

+0

Hi @pedalpete,我已更新我的帖子以显示对象的外观。它们绝对不是一个功能。 – Teknotica

+0

这很有趣Teknotica。这应该没关系,但为了一致性,我建议您输出'function(key,value)'而不是'(value,key)',因为这与数据结构更加一致。话虽如此,你是否输出了'key'的内容来查看返回的内容?如何通过传递'(i){console.log(i)'作为forEach的回调并查看给出的内容。我经常发现这些小小的变化会给你提示发生了什么。 – pedalpete

回答

0

如果你试图做什么这样:

function getUniqueFilters(feed_items) {  

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

谢谢@STEVER - 请在下面阅读,因为这显然是问题所在。 – Teknotica

1

我的猜测是您使用console.log时,请求仍然没有得到解决。

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

console.log是通过引用和异步,所以你仍然可以看到控制台中的数据。我不熟悉firebase但您应该寻找一个回调/承诺。

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

console.log(object); 

debugger; // now check inside your console 
+0

感谢您的回答。你是对的,当添加调试器时,我可以看到数据仍然不存在。然后我会尝试回调。谢谢你的帮助! – Teknotica