【问题标题】:Problem filtering Array in Array by date between 2 dates问题在 2 个日期之间按日期过滤数组中的数组
【发布时间】:2020-12-11 09:42:15
【问题描述】:

所以我只是使用一种方法来过滤它,它就像一个魅力一样工作,但是当我提供的日期之间没有日期时,我丢失了我的原始数组(如预期的那样)。我该怎么做才能不丢失我的阵列。

我想要这个,因为当有人给出新日期时,无需重新加载即可过滤它。但我不能用空数组来做到这一点..

这是我的功能;

filterByDate(d) {
  this.orders = this.orders.filter(
    (element) =>
      element.order.orderdate >= d[0] &&
      element.order.orderdate <= d[1]
  );
},

d[0] 是 fromDate,d[1] 是 toDate。谢谢。

【问题讨论】:

  • filter() 方法创建一个新数组而不是更改原始数组。您是否尝试过不使用 filter() 方法从原始数组中删除项目。
  • 不,我没有,但我只是不想触摸我的原始数组,无论哪种方式,我都需要强制重新渲染或重新加载页面以从 api 获取原始数组。也许有一种 Vue 方式可以做到这一点,我对 Vue 很陌生!我刚刚将我的数组保存到存储并添加了一个按钮来重置它是我从存储中设置的原始数组,它实际上解决了我的问题。但是如果有更好的方法我正在等待它!
  • 你为什么不使用filterByDate(d) 中存储的原始数组。我的意思是这样,this.orders = this.originalOrders.filter()。 Vuex 有 mapState 让这更容易。
  • 太棒了!永远不要考虑那个。这解决了我的问题,非常感谢!
  • :) 欢迎您!您能否使用这些信息更新您的帖子,因为这样其他人更容易理解这一点。

标签: javascript arrays vue.js vuejs2 vue-component


【解决方案1】:

根据问题的评论部分,

  • filter() 方法不会修改原始数组。相反,它会创建一个新的。

  • this.orders = this.orders.filter() 将导致丢失原始数组。因此,您需要先将其存储在不同的变量中。 (例如:this.originalOrders

  • 那么this.originalOrders就可以进行过滤了,

filterByDate(d) {
  this.orders = this.originalOrders.filter(
    (element) =>
      element.order.orderdate >= d[0] &&
      element.order.orderdate <= d[1]
  );
},

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多