[英]Matching multiple values from array to object array
我正在嘗試創建一個預訂應用程序並標記出不可用的插槽。 不可用的插槽位於數組中,例如:
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 },
];
我的目標是使用不可用的數組和里面的每個值,並找到如何將該字段更改為
isReserved: true
我試過像這樣過濾
const matches = slots.filter((same) => same.slot === unavailable);
但不起作用。 什么樣的工作是
const matches = slots.filter((same) => same.slot === unavailable[0]);
但這僅匹配第一個值,我仍然不知道如何更改 isReserved 字段。
如果找到插槽,您可以迭代和更新。
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; }
如果您不想改變原始數組,您可以 map 具有新屬性的對象。
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; }
您可以使用 map 運算符並可以實現此目的。
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; })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.