Javascript 链接多个函数而不是传递函数作为参数

标签 javascript ecmascript-6

我做了一个findMaxChar计数算法练习,设法让它工作,但我的调用方法可以改进。

const myStr = 'Lorem Ipsummm'

function findRepeatable(myStr){
  let charMap = {}
  for(let char of myStr){
    if(charMap[char]) {
      charMap[char]++
    }else{
      charMap[char] = 1
    }
  }
  return charMap
}

function findMostRepeated(obj){
   let maxChar = '',
   max = 0
   for(let char in obj){
     if(obj[char] > max){
       max = obj[char]
       maxChar = char
     }
  }

  return `${maxChar}: ${max}`
}

console.log(findMostRepeated(findRepeatable(myStr)))

我将函数作为参数传递,如何使其像这样链接

findMostRepeated()
.findRepeatable()

https://jsbin.com/katixefoxe/edit?html,js,console

最佳答案

许多函数库都带有可用于“链接”的管道函数。

pipe(findRepeatable, findMostRepeated)(myStr)

您自己实现起来很容易。

function pipe(...funcs) {
  return function(value) {
    for (func of funcs) {
      value = value(func)
    }

    return value;
  }
}

关于Javascript 链接多个函数而不是传递函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47951969/

相关文章:

javascript - 如何使用另一个数组作为模板对数组数据进行排序?

javascript - 更改选择字段后如何清除输入类型文本?

javascript - 用 x,y,x1,y1,x2,y2,z 冲撞 d3js

javascript - React,数组中的图像未显示在 <img src> 中

javascript - 为什么 new Array(3) 函数不返回数组中的 3 个未定义值?

javascript - ES6 promise 执行顺序

javascript - 更好地使用异步IO

javascript - 在按钮 jquery 中删除并添加一个类,无法使其工作

ruby-on-rails - babelify + browserify-rails + React,未捕获的语法错误 : Unexpected token import

JavaScript 在不破坏的情况下获取嵌套属性