【问题标题】:How to change a function based on unknown number of arguments in javascript如何根据javascript中未知数量的参数更改函数
【发布时间】:2021-11-14 07:16:20
【问题描述】:

有没有办法在返回的函数中添加或操作表达式?

这是单个参数的示例:

function trackByProp(prop) {
  return function (value) {
    return value[prop];
  };
}

目的是扩展此功能以允许添加多个道具,例如

function trackByProp(...props) {
  props.forEach((prop) => {
    //Somehow add value[prop] to the return function???
  });

  return function (value) {
    return; // value[arg1] + value[arg2] + value[argN]
  };
}

或者有没有更简单的方法来创建这个函数?

【问题讨论】:

标签: javascript function functional-programming first-class-functions


【解决方案1】:
function trackByProps(...props) {
  return function (value) {
    return props.reduce((result, prop) => result + value[prop], "")
  }
}

使用内部函数中的属性可确保它们在闭包中可用。类似于单参数示例。然后可以在每次调用内部函数时对其进行迭代。

【讨论】:

  • 在 FP 中,我们尽量让函数保持简单。你原来的功能很好。如果您想处理多个属性,只需 map 处理它们。
猜你喜欢
  • 2011-09-20
  • 2022-08-09
  • 2011-05-06
  • 2015-08-02
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多