遍历嵌套的Firebase对象 - Javascript

3
如何迭代遍历嵌套的Firebase对象。
Publications-
            |
            |-Folder1------
            |             |-hdgjg76675e6r-
            |             |               |-Name
            |             |               |-Author
            |             |
            |             |+-hdgjdsf3275e6k
            |             |+-hd345454575e6f
            |+-Folder2

在我的出版物中,我有文件夹,而在文件夹中我有对象(包含属性如名称、作者)。
到目前为止,我已经遍历了文件夹。
snapshot.forEach(function (snapshot) {
    var key = snapshot.key();
    var obj = snapshot.val();
    console.log(key);
    //output => Folder1 , Folder2 etc
});

当我打印obj
console.log(obj);

它显示:

输入图片描述

如何遍历 obj 变量,因为它包含 hdgjg76675e6rhdgjdsf3275e6k 等等?

3个回答

5
您的obj只是一个普通的Javascript对象,您可以使用简单的for循环:
for(var key in obj) {
    console.log(obj[key]);
}

或者你可以在快照上再次使用forEach

folderSnapshot.forEach(function (objSnapshot) {
    objSnapshot.forEach(function (snapshot) {
        var val = snapshot.val();
        console.log(val); // Should print your object
    });
});

1
请注意:您可以在Chrome开发工具中右键单击对象,将其保存为临时变量。它会打印出类似于“temp1”的内容,如果您在Chrome控制台中输入“copy(temp1)”,则可以将其粘贴到任何编辑器中;) - Devid Farinelli
1
感谢您的提示,先生。 :) - Noman Ali

2

这棵树会增加深度吗?如果不会,那么这里最好的解决方案就是使用双重循环。

snapshot.forEach(function (snapshot) {
    var key = snapshot.key();
    var obj = snapshot.val();
    console.log(key);
    //output => Folder1 , Folder2 etc

    obj.forEach(function (book) {
        var title = book.title;
        var author = book.author;
    });
});

在我看来,不需要过度设计。


变量 key = snapshot.key,你不应该将其作为函数调用。 - egzonmustafa

1
这是一个简单的方法,可以将你的对象转换为对象数组:
var myObject = {key1: {name: 'hello'}, key2: {name: 'hello2'}}; 
var myArrayOfObject = Object.values(myObject);

console.log(myArrayOfObject);
// Result: (2) [Object, Object]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接