Javascript 从对象中包含的对象中获取密钥/对值

Javascript 从对象中包含的对象中获取密钥/对值,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,返回的对象: ref.orderByChild('name').once('value').then(function(snapshot){ var results = snapshot.val(); 当我记录结果时,图像就是我得到的,我一直在尝试访问三个对象中每一个的“活动”值,即网络钓鱼、信息和技术 这是我的第一个JS应用程序,如果这是一个简单的应用程序,很抱歉,但是在其他地方找不到答案。 var快照={ “信息”:{ “活动”:“y”, “名称”:“信息” }, “网络钓鱼”:

返回的对象:

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

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

这是我的第一个JS应用程序,如果这是一个简单的应用程序,很抱歉,但是在其他地方找不到答案。

var快照={
“信息”:{
“活动”:“y”,
“名称”:“信息”
},
“网络钓鱼”:{
“活动”:“z”,
“名称”:“网络钓鱼”
},
“技术”:{
“活动”:“x”,
“名称”:“技术”
},
};
console.log(snapshot.information.active);
console.log(snapshot.phishing.active);
console.log(snapshot.technologies.active)有两种(常用)方法可以做到这一点:Firebase方法和常规JavaScript方法

火基路 由于您似乎正在返回节点列表,因此我将从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获得所需的结果。显示了一种方法,但这里有另一种:

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()

循环该数组,您能清楚地说明您要问的问题吗?如果您发布了完整的代码片段,也会有所帮助。看见