javascript - 如何填写数组中不存在的边界之间的日期?

标签 javascript arrays momentjs

我正在使用 moment JS 通过与从 API 提取的数据进行比较,尝试输入 startBoundendBound 之间缺失的日期。

有没有办法预先填充数据,以便用y的值填充空日期作为0并添加界限之间的日期?

之前

var data = [{
  "x": "2018-05-02",
  "y": 8
}, {
  "x": "2018-05-06",
  "y": 4
}];

var startBound = '2018-05-01'; //Start Date bound
var endBound = '2018-05-07'; //End Date bound

之后

var data = [{
  "x": "2018-05-01", //Added
  "y": 0
}, {
  "x": "2018-05-02",
  "y": 8
}, {
  "x": "2018-05-03", //Added
  "y": 0
}, {
  "x": "2018-05-04", //Added
  "y": 0
}, {
  "x": "2018-05-05", //Added
  "y": 0
}, ... etc etc... {
  "x": "2018-05-06",
  "y": 4
}];

var data = [{
  "x": "2018-05-02",
  "y": 8
}, {
  "x": "2018-05-06",
  "y": 4
}];

var startBound = '2018-05-01'; //Start Date bound
var endBound = '2018-05-07'; //End Date bound
var startDate = moment(startBound);
var endDate = moment(endBound);

var days = endDate.diff(startDate, 'd', false);

for (var i = 1; i < days; i++) {
  data.splice(i, 0, {
    "x": startDate.add(1, 'd').toISOString(),
    'y': 0
  })
}

for (var i = 0; i < data.length; i++) {
  console.log(data[i].x);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

最佳答案

可能不是最有效或最优雅的答案,但它就像一个魅力!

var data = [{
  "x": "2018-05-02",
  "y": 8
}, {
  "x": "2018-05-06",
  "y": 4
}];

var startBound = '2018-05-01'; //Start Date bound
var endBound = '2018-05-07'; //End Date bound
var startDate = moment(startBound);
var endDate = moment(endBound);
var days = endDate.diff(startDate, 'd', false);

var newData = [];

var valY;

for (var i = 0; i <= days; i++) {
  valY = 0;
  for(var j=0;j<data.length;j++){
    if(data[j].x == startDate.toISOString().split("T")[0]){
      valY = data[j].y;
    }
  }
  newData[i] = {"x":startDate.toISOString().split("T")[0],"y": valY};
  startDate.add(1, 'd');
}

data = newData;

for (var i = 0; i < data.length; i++) {
  console.log(data[i]);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

关于javascript - 如何填写数组中不存在的边界之间的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50214242/

相关文章:

java - 根据未知值拆分字符串次数

javascript - Moment.js 夏令时转换

javascript - moment().utc().toISOString() 和 moment().utc().format() 有什么区别

javascript - 将 Date 参数作为本地时间提供给 mongoose 查询

arrays - 使用 ArrayList 将文本文件拆分并存储到数组中

javascript - 如何使用 jQuery 在单击特定链接时切换到特定选项卡面板?

javascript - 停止影响子 child 的 Jquery nth-child

javascript - 扩展 "Activate Later"功能

java - 如何在 IntelliJ-IDEA 中按字母顺序在运行前按字母顺序排列预写的 String[] 数组元素?

javascript - ng-class 不会更改类,除非我刷新页面