Условный reverse () с цепным методом (с использованием Lodash)

1

У меня есть следующий код:

if (this.config.order === 'asc' ) {
  return _.chain(this.rows)
    .sortBy(this.config.orderBy)
    .slice((this.config.page - 1) * this.config.numOfRows, this.config.page 
    * this.config.numOfRows - 1)
    .value()

} else {
    return _.chain(this.rows)
    .sortBy(this.config.orderBy)
    .reverse()
    .slice((this.config.page - 1) * this.config.numOfRows, this.config.page 
     * this.config.numOfRows - 1)
    .value()
}

Существует большое дублирование, потому что условие определяет, будет ли использоваться reverse() или нет.

Есть ли способ уменьшить его для одного фрагмента вызова _.chain?

Теги:
lodash

1 ответ

1
Лучший ответ

Это должно быть достигнуто с помощью _.tap, например:

_.chain(this.rows)
.sortBy(this.config.orderBy)
.tap(this.config.order === 'asc' ? _.noop : _.reverse)
// continue your chain

Но, возможно, вы можете использовать _.orderBy вместо _.sortBy, так как первый позволяет вам указать порядок сортировки в качестве аргумента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню