hey how can i remove an object from an grouped array ? my grouped array looks like the picture , its grouped by the date and i want to remove one item from it in my function:
const [inCard, setInCard] = useState(0);
const [events, setEvents] = useState([]);
const [eventsInCard, setEventsInCard] = useState([]);
function addToCard(event) {
if (!eventsInCard.some((e) => e._id === event._id)) {
setEventsInCard([...eventsInCard, event]);
newValueInCard++;
setEvents((events) =>
events.filter((item) =>
item._id === event._id)); //<= not working because its an object
}
setInCard(newValueInCard);
}
You can create a wizard to remove the key and use it in the old state, like so:
const removeKey = (key, { [key]: _, ...rest }) => rest; ... ... setEvents(prev => removeKey(event._id, prev)); // If event._id is datetime-like key you want to delete, otherwise replace it with appropriate oneUPDATED
If you want to update the array inside the object (under some date-like key), you can do it like this:
const dateKey = event.somePropFromEvent; // YOU NEED TO KNOW UNDER WHICH KEY IS ARRAY YOU WANT TO MODIFY const id = event._id; setEvents(prev => ({...prev, [dateKey]: prev[dateKey].filter(x => x._id !== id)}));