簡體   English   中英

將數組中的多個值匹配到 object 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM