从数组中删除一个对象直到给定日期javascript

嗨,我到处搜索,但无法完成这些事情

我想从数组中删除过时的(截至昨天)对象

我的阵列看起来像这样

 [{"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"}]

请指导我

回答

我想yesterday从数组中删除过时的(最多)个对象

说实话,你应该记住永远不要改变你的数据

==> 只需根据您的需要使用它。

您可以使用.filter基于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));

更优雅的方式是使用 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>


filter()方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。

  • Oh no, you should keep in mind that never mutate your data. Just use it based on your needs.

以上是从数组中删除一个对象直到给定日期javascript的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>