Considere la matriz de objetos a continuación,
const resource = [ { id: 'tony', shiftday: [ {active: '1', code: 'Sun'}, {active: '1', code: 'Mon'}, {active: '1', code: 'Tue'}, {active: '1', code: 'Wed'}, {active: '1', code: 'Thu'}, {active: '1', code: 'Fri'}, {active: '1', code: 'Sat'}, ] }, { id: 'alex', shiftday: [ {active: '0', code: 'Sun'}, {active: '1', code: 'Mon'}, {active: '1', code: 'Tue'}, {active: '0', code: 'Wed'}, {active: '1', code: 'Thu'}, {active: '1', code: 'Fri'}, {active: '0', code: 'Sat'}, ] }, { id: 'trey', shiftday: [ {active: '0', code: 'Sun'}, {active: '1', code: 'Mon'}, {active: '0', code: 'Tue'}, {active: '1', code: 'Wed'}, {active: '0', code: 'Thu'}, {active: '1', code: 'Fri'}, {active: '0', code: 'Sat'}, ] }, ]Necesito obtener todos los valores que tienen el día activo establecido en 1 (seleccionado) y hacerlo coincidir con las otras identificaciones. Y poder decir qué ID tienen días activos coincidentes.
Así es como puedes lograrlo. Acabo de imprimir activeDays, en cambio, puede almacenarlo en una matriz separada y reutilizarlo después del ciclo.
const neededArrayOfIds = ['trey']; // <- Declare array of needed IDs resource.forEach(elm => { if (neededArrayOfIds.includes(elm.id)) { const activeDays = elm.shiftday.filter(day => day.active == 1) console.log(activeDays) } })Da una matriz de día activo de objeto.
const activeDays = resource.map(item => item.shiftday.filter(day => day.active === '1')); console.log(activeDay);Solo usa:
const filteredArr = resource.map((item) => { const filteredShiftDays = item.shiftday.filter((state) = state.active === '1'); return { id: item.id, active: filteredShiftDays }; });Devuelve todos los días activos, incluido el ID de qué días pertenece a quién.