2017-05-09 120 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值。因为它显示未定义。 –