2017-05-09 155 views
1

我正在獲取JSON數據。我正在使用時間格式的js。所以我想在獲得數據後添加一些值。我的數據就像(0.0,1.00,2.00,3.00,4.00到23.00)。現在我得到一些返回值,如2.00,3.00,4.00。我的JSON數據:獲取響應後修改JSON數據

[{ 
    "_id": { 
     "hr": 2, 
     "minut": 2 
    }, 
    "totoal": 42 
}, 
{ 
    "_id": { 
     "hr": 4, 
     "minut": 3 
    }, 
    "total": 144 
}, 
{ 
    "_id": { 
     "hr": 8, 
     "minut": 5 
    }, 
    "total": 188 
}, 
{ 
    "_id": { 
     "hr": 9, 
     "minut": 10 
    }, 
    "total": 128 
} 
] 

var time =_.map(resp.data, function(res) { 
    return (res._id.hr + ':' + res._id.minut + 0) 
}); 

當我在控制檯上打印「時間」時,它會顯示像這樣。

2:20,4:30,8:50.9:10

我想設置爲圖表該定時。爲了更好的理解,我可以向你展示一些圖表的片段。 enter image description here

但我要修改這些值像

00:00,下午1:00,2:00,3:00,4:00,5:00,6:00,7: 00,8:50,9:00,10:00,11:50 ,12.00,13:10,14:00,15:00,14:30,15:30

慾望結果: enter image description here

所以我現在得到這些「2:20,4:30 ,8:50,9:10「」數值以「時間」變量與數組形式。所以我想在圖表中顯示每個小時。但我只得到一些不是全部的值(哪個時間沒有數據,那麼它不是返回時隙)。 SO數據是json數據中顯示的總數。但是我想要顯示所有沒有數據的人(總數)。

+0

你可能需要遍歷從0到最大的時間和創建軸在圖形中的代碼蜱。我懷疑它與你的回覆數據有什麼關係。你使用什麼圖形庫? –

回答

1

var x = [{ 
 
    "_id": { 
 
     "hr": 2, 
 
     "minut": 2 
 
    }, 
 
    "totoal": 42 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 4, 
 
     "minut": 3 
 
    }, 
 
    "total": 144 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 8, 
 
     "minut": 5 
 
    }, 
 
    "total": 188 
 
    }, 
 
    { 
 
    "_id": { 
 
     "hr": 9, 
 
     "minut": 10 
 
    }, 
 
    "total": 128 
 
    } 
 
] 
 

 
var time = []; 
 

 
// you can replace x with resp.data from your code 
 
// this line 
 
// _.sortBy(x, function(res, idx) { 
 
// will be 
 
//_.sortBy(resp.data, function(res, idx) { 
 

 

 
_.sortBy(x, function(res, idx) { 
 
    if (typeof x[idx - 1] !== 'undefined') { 
 
    if (((x[idx - 1])._id.hr + 1) !== res._id.hr) { 
 
     for (var i = x[idx - 1]._id.hr + 1; i < res._id.hr; i++) { 
 
     time.push(i + ':00'); 
 
     } 
 
    } 
 
    } 
 
    time.push(('0' + res._id.hr).slice(-2) + ':' + ('0' + res._id.minut).slice(-2)); 
 
}); 
 

 
for (i = 1; i <= 12; i++) { 
 
    var x = time[i - 1]; 
 
    if (x !== undefined) { 
 
    var hr = parseInt(x, 10); 
 
    if (hr > i) { 
 
     time.splice(i - 1, 0, ('0' + i).slice(-2) + ':00'); 
 
    } 
 
    } else { 
 
    time.splice(i - 1, 0, ('0' + i).slice(-2) + ':00'); 
 
    } 
 
} 
 
console.log(time)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

+0

如果你想添加邏輯從0:00開始,並在12:00結束,那麼你可以修改邏輯很少 – MehulJoshi

+0

我試過這一個。你可以附加一些演示僅用於時間值嗎? –

+0

如何傳遞idx值。因爲它顯示未定義。 –