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



我在Firebase 3中使用了Ionic 2,我有一个读取方法,该方法返回带有键和值的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);
})
}

Firebase 上的"value"查询以升序格式返回键,但稍后键将与 momentJS 一起使用以按月分隔信息,但我必须以降序格式使用,因此它从实际月份到最新保存的月份,现在它2016/dec > 2017/jan > 2017/feb > ...,我需要2017/mar > 2017/feb > 2017/jan > ...

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

  • 使用this.informs = Object.keys(snap.val()).reverse();| 它只保存键和更多 6 或 7 个未定义的字段
  • 使用 for inside for,如for(key in snap.val()){ this.informs.push(key)}和 inside other 将所有值推送到新对象内部,然后像this.informs[key] = values;一样将其归因
  • 将物体推入this.informs[key].
  • 使用child_added获取值,但它返回我每个孩子,没有我将用来获取月份的键。

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

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

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

相关内容

  • 没有找到相关文章