有条件地链接数组方法

Coy*_*ero 3 javascript

如何使数组方法可选?

Leets说我有这个代码,但我想filtermap可选

const ages = data
  .filter(isDog)
  .map(dogYears)
  .reduce(sum);
Run Code Online (Sandbox Code Playgroud)

所以我会做类似的事情

let result

if(useFilter) {
  result = data.filter(isDog)
}

result
  .map(dogYears)
  .reduce(sum);
Run Code Online (Sandbox Code Playgroud)

我知道应该采用更紧凑,更实用的方式

Cer*_*nce 6

您可以使用三元运算符在一行中有条件地转换初始数组,而无需任何重新分配:

// const result = [ ... ]

const output = (useFilter ? result.filter(isDog) : result)
  .map(dogYears)
  .reduce(sum);
Run Code Online (Sandbox Code Playgroud)