Hi i have searched all over the place and cannot able to get this things done
I want to delete outdated(upto yesterday) objects from array
My array looks like this
[{"apdate": "09-12-2020", "booked": "14:30"},
{"apdate": "11-12-2020", "booked": "19:30"},
{"apdate": "10-12-2020", "booked": "19:00"},
{"apdate": "17-12-2020", "booked": "14:30"},
{"apdate": "17-12-2020", "booked": "15:30"},
{"apdate": "17-12-2020", "booked": "19:00", "phone": "9898989898"},
{"apdate": "10-01-2021", "booked": "16:00"},
{"apdate": "29-01-2021", "booked": "18:30"},
{"apdate": "01-02-2021", "booked": "14:00", "name": "Anand", "uuid": "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{"apdate": "01-02-2021", "booked": "10:00", "name": "Anand", "uuid": "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{"apdate": "01-02-2021", "booked": "03:30", "name": "Anand", "uuid": "cPA7ND7U2jdw7qY6nHf4kWuxyx53"}]
Please guide me
I want to delete outdated(up to
yesterday) objects from the array
To be honest, you should keep in mind that never mutate your data
==> Just use it based on your needs.
You can use .filter to filter your data based on a given_date.
const data = [
{apdate: "09-12-2020", booked: "14:30"},
{apdate: "11-12-2020", booked: "19:30"},
{apdate: "10-12-2020", booked: "19:00"},
{apdate: "17-12-2020", booked: "14:30"},
{apdate: "17-12-2020", booked: "15:30"},
{apdate: "17-12-2020", booked: "19:00", phone: "9898989898"},
{apdate: "10-01-2021", booked: "16:00"},
{apdate: "29-01-2021", booked: "18:30"},
{apdate: "01-02-2021", booked: "14:00", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{apdate: "01-02-2021", booked: "10:00", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{apdate: "01-02-2022", booked: "03:30", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"}
];
const convertStringToDate = (strDate) => {
const values = strDate.split("-");
return new Date(values[2], values[1] - 1, values[0]);
};
const filterDataByGivenDate = (data, givenDate) => data.filter(r => convertStringToDate(r.apdate) >= givenDate);
const today = new Date();
const yesterday = today.setDate(today.getDate() - 1);
console.log(filterDataByGivenDate(data, yesterday));
A more elegant way is using moment.js
const data = [
{apdate: "09-12-2020", booked: "14:30"},
{apdate: "11-12-2020", booked: "19:30"},
{apdate: "10-12-2020", booked: "19:00"},
{apdate: "17-12-2020", booked: "14:30"},
{apdate: "17-12-2020", booked: "15:30"},
{apdate: "17-12-2020", booked: "19:00", phone: "9898989898"},
{apdate: "10-01-2021", booked: "16:00"},
{apdate: "29-01-2021", booked: "18:30"},
{apdate: "01-02-2021", booked: "14:00", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{apdate: "01-02-2021", booked: "10:00", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"},
{apdate: "01-02-2022", booked: "03:30", name: "Anand", uuid: "cPA7ND7U2jdw7qY6nHf4kWuxyx53"}
];
const filterDataByGivenDate = (data, givenDate) => data.filter(r => moment(r.apdate, 'DD-MM-YYYY').isSameOrAfter(givenDate));
const yesterday = moment().subtract(1, 'days');
console.log(filterDataByGivenDate(data, yesterday));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
The
filter()method creates a new array with all elements that pass the test implemented by the provided function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With