从对象中的对象获取键/对值

时间:2017-03-23 13:12:37

标签: javascript firebase firebase-realtime-database

返回的对象:

Objects thats returned

ref.orderByChild('name').once('value').then(function(snapshot){
    var results = snapshot.val();

当我记录结果时,图像就是我得到的,我一直试图为三个对象,网络钓鱼,信息和技术中的每一个访问“活动”的值。

这是我的第一个JS应用程序抱歉,如果它很容易但无法找到其他有用的答案。

2 个答案:

答案 0 :(得分:2)

有两种(常见的)方法:Firebase方式和常规JavaScript方式。

Firebase方式

由于您似乎正在返回节点列表,因此我将从Firebase方式开始。

ref.orderByChild('name').once('value').then(function(snapshot){
    var actives = {};
    snapshot.forEach(function(childSnapshot) {
        var result = childSnapshot.val();
        var key = result.key;
        var active = result.active;
        actives[key] = active;
    }
    console.log(actives);
}

所以我们在这里使用Firebase的Snapshot.forEach()方法循环子节点。

常规JavaScript方式

或者,您可以像现在一样获取整个快照的值,并使用普通的旧JavaScript来获得所需的结果。 Jatin's answer显示了一种方法,但这是另一种方式:

ref.orderByChild('name').once('value').then(function(snapshot){
    var results = snapshot.val();
    var keys = Object.keys(results); // ["information", "phishing", "techniques"]
    var actives = {};
    keys.forEach(function(key) {
        actives[key] = results[key].active;
    });
    console.log(actives);
}

因此,在这种情况下,我们使用Object.keys()来获取子节点名称,然后使用JavaScript Array.forEach()循环遍历该数组。

答案 1 :(得分:1)



var snapshot = {
  "information" : {
    "active" : "y",
    "name" : "information"
  },
  "phishing" : {
    "active" : "z",
    "name" : "phishing"
  },
  "techniques" : {
    "active" : "x",
    "name" : "techniques"
  },
};

console.log(snapshot.information.active);
console.log(snapshot.phishing.active);
console.log(snapshot.techniques.active);