У меня есть следующий код:
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
?
Это должно быть достигнуто с помощью _.tap, например:
_.chain(this.rows)
.sortBy(this.config.orderBy)
.tap(this.config.order === 'asc' ? _.noop : _.reverse)
// continue your chain
Но, возможно, вы можете использовать _.orderBy вместо _.sortBy, так как первый позволяет вам указать порядок сортировки в качестве аргумента.