I have two hashmaps which both have a string as a key and an array of strings as a value. I need to modify one of the values in one HashMap based on the values in the other.
So basically I have an HashMap called genericSlots and another called bookedSlots. If the bookedSlots HashMap values are also contained in the genericSlots values I would like those values to be removed from the genericSlots HashMap
I have tried doing this as shown in the code below but the values in the genericSlotsAsArray are not being removed.
Here is the code:
checkForBookedSlots(date:string){
let genericSlots = new Map<string,string[]>();
let bookedSlots = new Map<string,string[]>();
let bookedArray = ['09:00','11:00']
let slotTimes = ["09:00", "09:30","10:00", "10:30", "11:00", "11:30", "12:00", "12:30","13:00","13:30", "14:00","14:30","15:00","15:30","16:00","16:30"]
bookedSlots.set("09/10/2021",bookedArray)
genericSlots.set(date,slotTimes)
let genericSlotsAsArray = Array.from(genericSlots.values());
let bookedSlotsAsArray = Array.from(bookedSlots.values())
for(let i=0;i< genericSlotsAsArray.length; i++){
for(let j=0;j<bookedSlotsAsArray.length;j++){
let mValue = bookedSlotsAsArray[j];
if(mValue === genericSlotsAsArray[i]){
const index = genericSlotsAsArray.indexOf(mValue, 0)
genericSlotsAsArray.splice(index, 1)
}
}
}
console.log('Generic Slots -> ', genericSlotsAsArray)
console.log('Booked Slots -> ', bookedSlotsAsArray) }
Expected output:
Generic Slots - > ["09:30","10:00", "10:30","11:30", "12:00", "12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30"]
Booked Slots -> ["09:00","11:00"]
Actual Output:
Generic Slots - > ["09:00","09:30","10:00", "10:30","11:00","11:30", "12:00", "12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30"]
Booked Slots -> ["09:00","11:00"]