如何使用lodash在两个日期之间过滤值?

时间:2018-12-19 09:02:03

标签: javascript reactjs lodash

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();

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您可以使用矩量库为您实现这一目标,假设这两个值是类似于日期的矩:

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

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

答案 2 :(得分:0)

我更喜欢使用日期库。 > 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