Javascript 在数组中的关键帧内推送对象?

Javascript 在数组中的关键帧内推送对象?,javascript,arrays,firebase,firebase-realtime-database,ionic2,Javascript,Arrays,Firebase,Firebase Realtime Database,Ionic2,我将Ionic 2与Firebase 3一起使用,我有一个read方法返回带有键和值的JSON,这是结构的一部分 { "1475323200" : { "-KfNUUZf9ehNdVSCiBO": { "date": 1489690818, "msg": "Mussum Ipsum", "title": "Pagamentos" } }, "1478001600": { "-KfNUUZf9ehNdVSCiBO": { "date": 14

我将Ionic 2与Firebase 3一起使用,我有一个read方法返回带有键和值的JSON,这是结构的一部分

{
 "1475323200" : {
   "-KfNUUZf9ehNdVSCiBO": {
    "date": 1489690818,
    "msg": "Mussum Ipsum",
    "title": "Pagamentos"
   }
 },
 "1478001600": {
   "-KfNUUZf9ehNdVSCiBO": {
    "date": 1489690818,
    "msg": "Mussum Ipsum",
    "title": "Pagamentos"
   }
  }
}
这就是我现在的代码或者我正在尝试的。之后我会解释的

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);
    })
}
ionViewWillLoad(){
firebase.database().ref('Administrative/Informs')。on('value',snap=>{
如果(snap.val()!=null){
让data=snap.val();//将是一个对象
这个.organizer(数据)。然后(res=>{
console.log(this.notifys);
})
}否则{
this.noinfo==true;
}
});
}
组织者=(数据:任意):承诺=>{
对于(var i=Object.keys(data.length;i>0;i--){
this.notifys.push(数据[i]);
}
返回新承诺(res=>{
res(真);
})
}
firebase上的“value”查询以升序格式返回键,但键稍后将与momentJS一起用于按月分隔信息,但我必须以降序格式使用,以便从实际月份到最近保存的月份,现在是
2016/dec>2017/jan>2017/feb>。
我需要
2017/mar>2017/feb>2017/jan>。

我尝试了以下方法来实现这一点:

  • 使用this.informs=Object.keys(snap.val()).reverse()|它只保存键和更多6或7个未定义的字段
  • 用于inside for,如
    for(key in snap.val()){this.informs.push(key)}
    和inside other,用于将新对象中的所有值推入,然后对其进行属性化,如
    this.informs[key]=值
  • 将对象推到
    内。通知[键]
  • 使用添加的
    child\u获取值
    ,但它会返回每个没有用于获取月份的键的child

那么,如何将同一对象保存在数组中,但由第一个键反转?因为我需要它是一个带有长度参数的数组。

对象。keys
将以任意顺序创建对象键的数组。如果要对这些键进行排序,可以执行以下操作:

var数据={
"1475323200" : {
“-KfNUUZf9ehNdVSCiBO”:{
“日期”:1489690818,
“味精”:“贻贝”,
“标题”:“帕加门托斯”
}
},
"1478001600": {
“-KfNUUZf9ehNdVSCiBO”:{
“日期”:1489690818,
“味精”:“贻贝”,
“标题”:“帕加门托斯”
}
}
}
window.info=[];
Object.keys(data).sort((a,b)=>{parseInt(a)-parseInt(b)}).forEach(k=>this.informs.push(data[k]))

控制台日志(通知)
对象。键
将以任意顺序创建对象键的数组。如果要对这些键进行排序,可以执行以下操作:

var数据={
"1475323200" : {
“-KfNUUZf9ehNdVSCiBO”:{
“日期”:1489690818,
“味精”:“贻贝”,
“标题”:“帕加门托斯”
}
},
"1478001600": {
“-KfNUUZf9ehNdVSCiBO”:{
“日期”:1489690818,
“味精”:“贻贝”,
“标题”:“帕加门托斯”
}
}
}
window.info=[];
Object.keys(data).sort((a,b)=>{parseInt(a)-parseInt(b)}).forEach(k=>this.informs.push(data[k]))

控制台日志(通知)我现在有点困惑。数据(护墙板)是发送给this.organizer的,它是数组还是对象?因为使用
object.keys().length
,一个数字,然后使用
data[i]
对我来说没有意义,所以如果数据是数组,为什么要使用object.keys?如果数据是对象,你的意思是使用
data[object.keys(data)[i]]
选择记录?还是我遗漏了什么?@Shilly哦,对不起,因为我的代码不是英文的,所以我决定翻译它,以便人们更好地理解。将更新代码。我现在有点困惑。是数据吗(发送给this.Organizer的护墙板,是数组还是对象?因为我觉得使用
object.keys().length
,一个数字,然后使用
数据[i]
,那么如果数据是数组,为什么要使用object.keys?如果数据是对象,你的意思是使用
数据[object.keys(data)[i]]
选择记录?还是我遗漏了什么?@Shilly哦,对不起,因为我的代码不是英文的,所以我决定翻译它,以便人们更好地理解。我会更新代码吗