Javascript 函数类似于Jquery$.grep?

Javascript 函数类似于Jquery$.grep?,javascript,date,Javascript,Date,Jquery中的grep函数将接收json,并返回json中通过测试的所有部分。例如: var entriesInDateRange = $.grep(timeEntryChartData, function (timeEntryChartData) { return timeEntryChartData.Date_Worked >= e.value[0] && timeEntryChartData.Date_Work

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.
我希望它看起来像

Total_Hours: 9.48,
Start_Time: new Date("2020-05-18708:31:48"),
 End_Time: new Date("2020-05-18718:00:49") 

如果这样一个函数不存在,我认为可以创建一个在json上迭代的函数,如果key==“Start_Time”,则将其转换为date,但我正在寻找一个优雅的解决方案。

JSON.parse
可以将函数作为参数,用于在JSON数据反序列化时转换值

在这种情况下,您需要一个函数来测试每个值,看看它是否与ISO日期/时间格式匹配,如果匹配,则返回
新日期(值)
,否则返回原始值:

const iso8601 = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\dZ?$/
const reviveToDate = (k, v) => iso8601.test(v) ? new Date(v) : v;

let myObj = JSON.parse(myJSON, reviveToDate);

并且可以使用一个“reviver”函数,该函数可以匹配与日期格式匹配的字符串,并将它们直接转换为
日期
对象。另外,我怀疑分隔日期和时间的数字七(7)应该是大写的“T”。@derpirscher的作用与grep相同。如果该值未通过测试,我想修改它,而不是删除它。p.p.s JSON是一种序列化格式-一旦解析为JS原语值,它就不再是JSON。
const iso8601 = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\dZ?$/
const reviveToDate = (k, v) => iso8601.test(v) ? new Date(v) : v;

let myObj = JSON.parse(myJSON, reviveToDate);