Tengo dos matrices.
let dateArray = ['2018-05-04T00:00:00+01:00', '2019-04-20T00:00:00+01:00', '2020-05-29T00:00:00+01:00']; let rangesArray = [['2021-09-01','2022-09-01'],['2019-09-01','2020-09-01']];Cómo verificar si las fechas de dateArray están entre las fechas de rangesArray.
rangesArray[0] es el primer rango: estoy interesado en fechas entre 2021-09-01 y 2022-09-01.
rangesArray[1] es el segundo rango: estoy interesado en fechas entre 2019-09-01 y 2020-09-01.
use Date.parse() para convertir la cadena a la fecha para comparar.
ejemplo de trabajo:
function dateCheck(from, to, check) { var fDate, lDate, cDate; fDate = Date.parse(from); lDate = Date.parse(to); cDate = Date.parse(check); if (cDate <= lDate && cDate >= fDate) { return true; } return false; } let dateArray = [ "2018-05-04T00:00:00+01:00", "2019-04-20T00:00:00+01:00", "2020-05-29T00:00:00+01:00", ]; let rangesArray = [ ["2021-09-01", "2022-09-01"], ["2019-09-01", "2020-09-01"], ]; for (let i = 0; i < dateArray.length; i++) { for (let j = 0; j < rangesArray.length; j++) { console.log(dateCheck(rangesArray[j][0], rangesArray[j][1], dateArray[i])); } } explicación: la función dateCheck comprueba si la fecha está from la fecha y to fecha. con dos bucles puedes obtener el resultado que deseas.
De una sola mano :
let dateArray = ['2018-05-04T00:00:00+01:00', '2019-04-20T00:00:00+01:00', '2020-05-29T00:00:00+01:00']; let rangesArray = [['2021-09-01','2022-09-01'],['2019-09-01','2020-09-01']]; const res = [] dateArray.forEach(d => { rangesArray.forEach(a => { if ((new Date(d) >= new Date(a[0])) && (new Date(d) <= new Date(a[1]))){ res.push({date: d, range: a[0] + ' ' + a[1]}) } }) }) console.log(res)