如何在AngularFire中基于Timespan对以下数组进行排序?

时间:2018-04-02 04:44:28

标签: sorting firebase firebase-realtime-database angularfire snapshot

{
0
:
{associate_sales: "j72LOAjajLRbKKK0XYfHcCMghdB3", displayName: "Sneh", email: "sneh@email.com",  timespan: 1, …}
1
:
{displayName: " Sales4", email: "sales4@email.com",  timespan: 1, uid: "2e5piC6E8eO16qDDaP0qPA0LDRJ3", …}
2
:
{associate_sales: "c8kMXIkXcRgTUInPbdhL5oinbzv2", displayName: " client11", email: "client11@email.com", timespan: 12, …}
3
:
{associate_sales: "j72LOAjajLRbKKK0XYfHcCMghdB3", displayName: "Client1", email: "client1@email.com", timespan: 1522320931451, …} }

这是我在控制台中获取的响应。如何根据时间跨度升序或降序获取此结果。 我正在使用以下方法,但它不起作用

 this.databaseObj2.orderByChild('timespan').once('value', (snapshot) => {
// code
});

请帮忙。提前完成。

1 个答案:

答案 0 :(得分:2)

首先将数据作为json对象推送到数组中。

let temp_array = [];
this.databaseObj2.orderByChild('timespan').once('value', (snapshot) => {
   let result = snapshot.val();
   for(let k in result){
      temp_array.push({
         id : k, // this "K" gives the id of you object
         timespan : result[k].timespan,
         display_name : result[k].displayName,
         //rest of data 
      })
   }
});

temp_array.sort((a, b) => parseFloat(b.timespan) - parseFloat(a.timespan));