将多个值从数组匹配到对象数组
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; }
如果您不想改变原始数组,可以使用新的 属性 映射对象。
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; }
你可以使用地图运算符,并且可以实现这一点。
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;
})
我正在尝试创建一个预订应用程序并标出不可用的时段。不可用的插槽在一个数组中,例如:
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; }
如果您不想改变原始数组,可以使用新的 属性 映射对象。
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; }
你可以使用地图运算符,并且可以实现这一点。
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;
})