【问题标题】:How can I use lodash to filter value between two date?如何使用 lodash 过滤两个日期之间的值?
【发布时间】:2018-12-19 09:02:03
【问题描述】:

created_at 是我想与beginDateendDate 比较的值。

var newARRA = chain(this.props.transferts.transfertAccount)
.filter({ 'officeSender':
      this.props.users.user.office,officeReceiver:this.state.selectedOffice,
	 'created_at':(this.state.beginDate,this.state.endDate)})
				
.groupBy("currency")
.map((v, k) => ({
     currency: k,
	 amount: sumBy(v, 'fee')
	}))
.value();

【问题讨论】:

    标签: javascript reactjs lodash


    【解决方案1】:

    您需要使用filter's predicate function。示例(未测试):

    var newARRA = chain(this.props.transferts.transfertAccount)
      .filter(({ officeSender, officeReceiver, created_at }) => {
        return _.eq(officeSender, this.props.users.user.office) &&
               _.eq(officeReceiver, this.state.selectedOffice) &&
               _.gte(created_at, this.state.beginDate) &&
               _.lte(created_at, this.state.endDate) &&
      })
      .groupBy("currency")
      .map((v, k) => ({
        currency: k,
        amount: sumBy(v, 'fee')
      }))
      .value();
    

    【讨论】:

    • 不客气。别忘了accept :)
    【解决方案2】:

    您可以使用 moment 库来为您实现这一点,假设这两个值是像日期一样的时刻:

    'created_at': moment().isBetween(this.state.beginDate, this.state.endDate)
    

    这确实假设日期是类似时刻的,并且不需要时刻库进行任何预处理。

    【讨论】:

    • 我不能使用 Moment,因为 'created_at' 值的格式必须是预处理的。
    【解决方案3】:

    我更喜欢使用日期库。 > date-fns 可以为你做到这一点

    var isWithinRange = require('date-fns/is_within_range')
    isWithinRange(
       new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7)
    )//=> true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多