我使用Ionic 2和Firebase 3,我有一个读取方法,返回带有键和值的JSON,这是结构的一部分
int main()
{
for (int i = 0; i < 5; i++) // If this is a function, how can we define it inside another function?
{
printf("Hello");
}
}
这是我现在的代码或我尝试做的事情。我会在它之后解释
{
"1475323200" : {
"-KfNUUZf9ehNdVSCiBO": {
"date": 1489690818,
"msg": "Mussum Ipsum",
"title": "Pagamentos"
}
},
"1478001600": {
"-KfNUUZf9ehNdVSCiBO": {
"date": 1489690818,
"msg": "Mussum Ipsum",
"title": "Pagamentos"
}
}
}
&#39;价值&#39; firebase上的查询以递增的格式返回给我键,但是稍后的键将与momentJS一起使用以按月分隔信息,但是我必须以降序格式使用它,以便从实际月份到最新保存,现在它是ionViewWillLoad() {
firebase.database().ref('Administrative/Informs').on('value', snap => {
if (snap.val() != null) {
let data = snap.val(); //will be an object
this.organizer(data).then(res => {
console.log(this.informs);
})
} else {
this.noInforms == true;
}
});
}
organizer = (data: any): Promise<boolean> => {
for (var i = Object.keys(data).length; i > 0; i--) {
this.informs.push(data[i]);
}
return new Promise<boolean>(res => {
res(true);
})
}
,我需要2016/dec > 2017/jan > 2017/feb > ...
我试过这种方法来实现这个目标:
2017/mar > 2017/feb > 2017/jan > ...
|它只保存密钥和更多6或7个未定义的字段this.informs = Object.keys(snap.val()).reverse();
和其他内部用于推送新对象内的所有值,然后将其归结为for(key in snap.val()){ this.informs.push(key)}
this.informs[key] = values;
内的对象。this.informs[key]
获取价值,但它会让每个没有钥匙的孩子都知道我会用来获得月份。那么,如何在数组中保存相同的对象,但是用第一个键反转? Sine我将在* ng中使用它我需要它是一个带有长度参数的数组。
答案 0 :(得分:0)
Object.keys
将以任意顺序创建对象键的数组。如果你想对这些键进行排序,你可以这样做:
var data = {
"1475323200" : {
"-KfNUUZf9ehNdVSCiBO": {
"date": 1489690818,
"msg": "Mussum Ipsum",
"title": "Pagamentos"
}
},
"1478001600": {
"-KfNUUZf9ehNdVSCiBO": {
"date": 1489690818,
"msg": "Mussum Ipsum",
"title": "Pagamentos"
}
}
}
window.informs = [];
Object.keys(data).sort((a,b) => {parseInt(a) - parseInt(b)}).forEach(k => this.informs.push(data[k]))
console.log(informs);
&#13;
.sort((a,b) => {parseInt(a) - parseInt(b)})
会按升序对键进行排序,按降序使用.sort((a,b) => {parseInt(b) - parseInt(a)})