javascript - 使用 jquery/javascript 填充 json 字符串中缺失的日期

标签 javascript jquery json

这是我所拥有的示例:

[{
  "probeTemp": "35.40",
  "dateProbe": "2015-08-1"
}, {
  "probeTemp": "34.89",
  "dateProbe": "2015-08-3"
}, {
  "probeTemp": "34.42",
  "dateProbe": "2015-08-5"
}]

如何填充 json 字符串中最小日期和最大日期之间缺失的日期,以便缺失的字段最终像这样?

    [{
      "probeTemp": "35.40",
      "dateProbe": "2015-08-1"
    }, {
      "probeTemp": null,
      "dateProbe": "2015-08-2"
    }, {
      "probeTemp": "34.89",
      "dateProbe": "2015-08-3"
    }, {
      "probeTemp": null,
      "dateProbe": "2015-08-4"
    }, {
      "probeTemp": "34.42",
      "dateProbe": "2015-08-5"
    }]

我找到了this thread ,但我不知道如何将其应用到我的数据中。有什么帮助吗?

编辑2:This is what I tried so far ,但我在第 7 行和第 23 行收到 Uncaught TypeError: Cannot read property 'length' of undefined

最佳答案

我们从获取第一个和最后一个日期开始。让

const a = [{
  "probeTemp": "35.40",
  "dateProbe": "2015-08-1"
}, {
  "probeTemp": "34.89",
  "dateProbe": "2015-08-3"
}, {
  "probeTemp": "34.42",
  "dateProbe": "2015-08-5"
}]; 

然后

const firstDate = a[0].dateProble; // "2015-08-1"
const lastDate = a[a.length-1].dateProbe; // "2015-08-5"

现在我们可以构建所有日期的范围。

const dates = [ ...Array(
        Date.parse(lastDate)/86400000 - Date.parse(firstDate)/86400000 + 1).keys()    
    ].map(k => new Date(
            86400000*k+Date.parse(firstDate)
        ).toISOString().slice(0, 10).replace(/-0(\d)$/, '-$1')); 
// [ "2015-08-1", "2015-08-2", "2015-08-3", "2015-08-4", "2015-08-5" ] 

我们创建了适当长度的范围,然后将其在时间轴中移动了从纪元到第一个日期的毫秒数。最后我们再次创建日期变换 转换为字符串,进行切片以获得更自然的日期格式,并使用正则表达式删除天数中的前导 0

在最后一步中,我们可以定义 res - 包含结果的变量。我们将其定义为空数组,并在 for 循环中推送下一个元素。最重要的是probeTemp。如果我们从范围中考虑的日期等于数组中的日期,那么我们可以添加 probeTemp ,然后增加 j 索引,如果它是比 probeTemp 新的日期code> 等于 null,并且 j 索引未更改。

let res = []; 
for(let i=0,j=0; i<dates.length; i++) { 
    res[i] = {
        dateProbe: dates[i], 
        probeTemp: dates[i] === a[j].dateProbe ? a[j++].probeTemp : null
    }; 
}; 
console.table(res);

此解决方案适用于排序数组a

关于javascript - 使用 jquery/javascript 填充 json 字符串中缺失的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651385/

相关文章:

javascript - 将固定标题效果应用于非固定标题

javascript - Browserify-hogan .render() 返回空字符串

javascript - 如何使用谷歌地图准确获取当前地址?

javascript - 使用 javascript 显示隐藏的 HTML 元素

php - 解析大型 JSON 文件

javascript - 将 Typescript 类型声明添加到 Monaco 编辑器

javascript - 通过 JQuery 从 SELECT 标签获取选定的 Data 属性

javascript - 单选按钮的困惑

php - 使用 PHP 和 MySQL 生成 JSON 格式的表

java - Spark 中的 DataFrame 到 Json 数组