在数组中的键中推送一个对象?

时间:2017-03-17 12:56:09

标签: javascript arrays firebase firebase-realtime-database ionic2

我使用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中使用它我需要它是一个带有长度参数的数组。

1 个答案:

答案 0 :(得分:0)

Object.keys将以任意顺序创建对象键的数组。如果你想对这些键进行排序,你可以这样做:

&#13;
&#13;
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;
&#13;
&#13;

.sort((a,b) => {parseInt(a) - parseInt(b)})会按升序对键进行排序,按降序使用.sort((a,b) => {parseInt(b) - parseInt(a)})