Jquery中的grep函数将接收一个json,并返回json中通过测试的所有部分。例如:
var entriesInDateRange = $.grep(timeEntryChartData, function (timeEntryChartData) {
return timeEntryChartData.Date_Worked >= e.value[0] && timeEntryChartData.Date_Worked <= e.value[1];
});
// This function will return all time entries that are within the range of e.value.
我正在寻找一个类似的函数,它接受json中所有看起来像";2020-12-30T08:11:35.99";并将其转换为日期对象。
我的Json充满了这样的数组:
Total_Hours: 9.48,
Start_Time:"2020-05-18708:31:48",
End_Time: "2020-05-18718:00:49"
我希望它看起来像
Total_Hours: 9.48,
Start_Time: new Date("2020-05-18708:31:48"),
End_Time: new Date("2020-05-18718:00:49")
如果这样的函数不存在,我认为可以创建一个在json上迭代的函数,并且如果key=="开始时间";,然后把它选到目前为止,但我正在寻找一个优雅的解决方案。
JSON.parse
可以将reviver函数作为参数,该参数可用于在取消序列化JSON数据时对值进行转换。
在这种情况下,您需要一个函数来测试每个值,看看它是否与ISO日期/时间格式匹配,如果匹配,则返回new Date(value)
,否则返回原始值:
const iso8601 = /^d{4}-dd-ddTdd:dd:ddZ?$/
const reviveToDate = (k, v) => iso8601.test(v) ? new Date(v) : v;
let myObj = JSON.parse(myJSON, reviveToDate);