首页 > 解决方案 > 如何根据javascript中未知数量的参数更改函数

问题描述

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

这是单个参数的示例:

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]
  };
}

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

标签: javascriptfunctionfunctional-programmingfirst-class-functions

解决方案


function trackByProps(...props) {
  return function (value) {
    return props.reduce((result, prop) => result + value[prop], "")
  }
}

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


推荐阅读