Javascript 在数组中的关键帧内推送对象?
我将Ionic 2与Firebase 3一起使用,我有一个read方法返回带有键和值的JSON,这是结构的一部分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
{
"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,如
和inside other,用于将新对象中的所有值推入,然后对其进行属性化,如for(key in snap.val()){this.informs.push(key)}
this.informs[key]=值代码>
- 将对象推到
内。通知[键]
- 使用添加的
,但它会返回每个没有用于获取月份的键的childchild\u获取值
那么,如何将同一对象保存在数组中,但由第一个键反转?因为我需要它是一个带有长度参数的数组。
对象。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哦,对不起,因为我的代码不是英文的,所以我决定翻译它,以便人们更好地理解。我会更新代码吗