条件反向()与链方法(使用Lodash)

时间:2017-11-29 13:44:21

标签: javascript lodash

我有以下代码:

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<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale-1">个来电来减少它?

1 个答案:

答案 0 :(得分:1)

使用_.tap可以实现这一点,如下所示:

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

但也许您可以使用_.orderBy而不是_.sortBy,因为前者允许您将排序顺序指定为参数。