我在以特定格式从firebase检索数据时遇到一些麻烦,虽然看起来应该很简单。
数据库端点以这种格式收集此数据:
{
"A": {
"width": 120,
"height": 130
},
"B": {
"width": 350,
"height": 240
},
"C": {
"width": 680,
"height": 160
}
我想做的就是将字母与各自的宽度和高度相连,然后将所有组推入一个数组,并将其设置为等于数据'所以我可以打电话给数据'程序中的任何地方都可以使用它,如下所示:
var data = [{
"id" : "A",
"width": 120,
"height": 130
}, {
"id" : "B",
"width": 350,
"height": 240
}, {
"id" : "C",
"width": 680,
"height": 160
}];
// somewhere else in the file
// data[0].end === 150
最简单的方法是什么?
谢谢!
答案 0 :(得分:2)
var junk = {
"A": {
"width": 120,
"height": 130
},
"B": {
"width": 350,
"height": 240
},
"C": {
"width": 680,
"height": 160
}
};
var data = [];
for (var property in junk) {
if (junk.hasOwnProperty(property)) {
data.push({
name:property,
end: junk[property].width,
start:junk[property].height
});
}
}
console.log(data);
答案 1 :(得分:0)
鉴于您要从Firebase检索数据,您将在所谓的DataSnapshot中获取数据。该类有一个方便的forEach()
方法,允许迭代其子代:
snapshot.forEach(function(child) {
data.push({
name: child.key(),
end: child.val().width,
start: child.val().height
});
})
我从Pamblam的答案中采用了start
和end
的逻辑,因为我不明白这是如何工作的。