Как я могу использовать lodash для фильтрации значений между двумя датами? - PullRequest
0 голосов
/ 19 декабря 2018

created_at - это значение, которое я хочу сравнить с beginDate и endDate.

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 голосов
/ 19 декабря 2018

Вам нужно будет использовать предикатную функцию фильтра .Пример (не тестировался):

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();
0 голосов
/ 19 декабря 2018

Я бы предпочел использовать библиотеку дат.> 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
0 голосов
/ 19 декабря 2018

Вы можете использовать библиотеку моментов, чтобы достичь этого, предполагая, что эти два значения являются моментами, похожими на даты:

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

Это предполагает, что даты являются моментными и не требуют каких-либопредварительная обработка моментальной библиотекой.

...