Tengo una matriz como esta:
const data = [ { id: '3499934913', user_data: { user_data_stays: [ { value: '30.0', date: '2021-10-01T12:55:00.000Z', }, { value: '30.0', date: '2021-11-01T12:55:00.000Z', }, { value: '30.0', date: '2021-13-01T12:55:00.000Z', } ], } }, { id: '43534535', user_data: { user_data_stays: [ { value: '30.0', date: '2021-11-01T12:55:00.000Z', }, { value: '30.0', date: '2021-12-01T12:55:00.000Z', }, { value: '30.0', date: '2021-13-01T12:55:00.000Z', } ], } }, ] ¿Cómo puedo mantener la estructura de toda la matriz pero filtrar en user_data_stays solo aquellos objetos cuya fecha es igual a 2021-10-01T12:55:00.000Z ?
Intenté usar el filtro y algunos, pero no puedo acceder al elemento anidado en el interior. Creo que el problema es la cantidad de anidamiento, y no puedo lidiar con eso. Apreciaría tu ayuda.
Puede usar forEach en la matriz externa y ejecutar el método de filtro en la matriz interna con la ayuda de la desestructuración, la referencia del objeto actualizará el objeto externo en su lugar.
const data = [ { id: "3499934913", user_data: { user_data_stays: [ { value: "30.0", date: "2021-10-01T12:55:00.000Z" }, { value: "30.0", date: "2021-11-01T12:55:00.000Z" }, { value: "30.0", date: "2021-13-01T12:55:00.000Z" }, ], }, }, { id: "43534535", user_data: { user_data_stays: [ { value: "30.0", date: "2021-11-01T12:55:00.000Z" }, { value: "30.0", date: "2021-12-01T12:55:00.000Z" }, { value: "30.0", date: "2021-13-01T12:55:00.000Z" }, ], }, }, ]; data.forEach(({ user_data }) => { user_data.user_data_stays = user_data.user_data_stays .filter(({ date }) => date === '2021-10-01T12:55:00.000Z'); }); console.log(data);