在获得响应后修改JSON数据

时间:2017-05-09 17:41:03

标签: javascript json momentjs

我正在获取JSON数据。我正在使用时刻js作为时间格式。所以我想在获取数据后添加一些值。我的数据类似于(0.0,1.00,2.00,3.00,4.00到23.00)。现在我得到一些返回值,如2.00,3.00,4.00。我的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: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

现在我已经在数组形式的“time”变量中得到了这些“2:20,4:30,8:50,9:10”值。所以我想用图表显示每个小时。但我只获得了一些不是全部的值(那时候没有数据然后它没有返回时隙)。 SO数据是json数据中显示的总数。但是我想要显示所有没有数据的人(总计)。

1 个答案:

答案 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>