以下是我所拥有的样本:
[{
"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
。
答案 0 :(得分:0)
嘿,我会这样想。
答案 1 :(得分:0)
使用智能足够聪明的api here实例化日期 - 在迭代中一次提前一天 - 帐户短期,闰年等等。通过向getDate添加1来提前( )返回(在Date实例上),然后使用该更高的值调用setDate方法。或者使用getTime和setTime方法添加一天中的毫秒数。
根据先前存在的探针温度图检查每个日期
您可以让另一个最大日期实例等待比较。在进行比较时,请在两个实例上使用getTime方法,即:
if ( iterDate.getTime() !== maxDate.getTime() ) {
if ( !previousProbeTemp )
newProbeTemp = null;
答案 2 :(得分:0)
我们从获取第一个和最后一个日期开始。让
fetch('https://pokeapi.co/api/v2/pokemon/')
.then(response => response.json())
.then(pokemon => this.setState({ pokemon: pokemon }))
.catch(err => console.log(err));
然后
fetch('https://pokeapi.co/api/v2/pokemon/')
.then(response => response.json())
.then(({results}) => this.setState({ pokemon: results }))
.catch(err => console.log(err));
现在我们可以建立所有日期的范围。
const a = [{
"probeTemp": "35.40",
"dateProbe": "2015-08-1"
}, {
"probeTemp": "34.89",
"dateProbe": "2015-08-3"
}, {
"probeTemp": "34.42",
"dateProbe": "2015-08-5"
}];
我们创建了具有适当长度的范围,然后将其在时间轴上从纪元到日期的第一毫秒之间移动了几毫秒。最后我们创建了Dates再次转换
字符串,将其切成薄片以获得更自然的日期格式,并使用regexp从天数中删除前导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
,然后递增probeTemp
索引,如果它是新日期,则probeTemp
等于null和{{1 }}索引不变。
j
此解决方案适用于排序数组probeTemp
。