Estoy tratando de crear una aplicación de reserva y marcar los espacios no disponibles. Las ranuras no disponibles están en una matriz, por ejemplo:
const unavailable = [ "11:00am a 12:00pm", "17:00pm a 18:00pm"]y las ranuras totales son
let slots = [ { slot: "9:00am a 10:00am", isReserved: false, }, { slot: "10:00am a 11:00am", isReserved: false, }, { slot: "11:00am a 12:00pm", isReserved: false }, { slot: "15:00pm a 16:00pm", isReserved: false, }, { slot: "17:00pm a 18:00pm", isReserved: false, }, { slot: "18:00pm a 19:00pm", isReserved: false, }, { slot: "19:00pm a 20:00pm", isReserved: false }, ];mi objetivo es usar la matriz no disponible y cada valor dentro y encontrar cómo cambiar ese campo a
isReserved: trueHe tratado de filtrar así
const matches = slots.filter((same) => same.slot === unavailable);pero no funciona. ¿Qué tipo de trabajo fue
const matches = slots.filter((same) => same.slot === unavailable[0]);pero eso solo coincide con el primer valor, y todavía no sé cómo cambiar el campo isReserved.
Puede iterar y actualizar si se encuentra una ranura.
const unavailable = ["11:00am a 12:00pm", "17:00pm a 18:00pm"], slots = [{ slot: "9:00am a 10:00am", isReserved: false }, { slot: "10:00am a 11:00am", isReserved: false }, { slot: "11:00am a 12:00pm", isReserved: false }, { slot: "15:00pm a 16:00pm", isReserved: false }, { slot: "17:00pm a 18:00pm", isReserved: false }, { slot: "18:00pm a 19:00pm", isReserved: false }, { slot: "19:00pm a 20:00pm", isReserved: false }]; slots.forEach(o => { if (unavailable.some(slot => slot === o.slot)) o.isReserved = true; }); console.log(slots); .as-console-wrapper { max-height: 100% !important; top: 0; }Si no desea mutar la matriz original, puede asignar los objetos con una nueva propiedad.
const unavailable = ["11:00am a 12:00pm", "17:00pm a 18:00pm"], slots = [{ slot: "9:00am a 10:00am", isReserved: false }, { slot: "10:00am a 11:00am", isReserved: false }, { slot: "11:00am a 12:00pm", isReserved: false }, { slot: "15:00pm a 16:00pm", isReserved: false }, { slot: "17:00pm a 18:00pm", isReserved: false }, { slot: "18:00pm a 19:00pm", isReserved: false }, { slot: "19:00pm a 20:00pm", isReserved: false }], result = slots.map(o => ({ ...o, isReserved: o.isReserved || unavailable.some(slot => slot === o.slot) })); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }puede usar el operador de mapa y puede lograr esto.
const unavailable = [ "11:00am a 12:00pm", "17:00pm a 18:00pm"] let slots = [ { slot: "9:00am a 10:00am", isReserved: false, }, { slot: "10:00am a 11:00am", isReserved: false, }, { slot: "11:00am a 12:00pm", isReserved: false }, { slot: "15:00pm a 16:00pm", isReserved: false, }, { slot: "17:00pm a 18:00pm", isReserved: false, }, { slot: "18:00pm a 19:00pm", isReserved: false, }, { slot: "19:00pm a 20:00pm", isReserved: false }, ]; const slots = slots.map(slotobj=>{ if(unavailable.includes(slotobj.slot)){ slotobj.isReserved =true } return slotobj; })