如何根据javascript中未知数量的参数更改函数

Posted

技术标签:

【中文标题】如何根据javascript中未知数量的参数更改函数【英文标题】:How to change a function based on unknown number of arguments in 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]
  ;

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

【问题讨论】:

Array.prototype.reduce() How much research effort is expected of Stack Overflow users? How to get a subset of a javascript object's properties 然后对他们为所欲为? @NicholasFoden "不可能只累积值[props],因为在调用时不知道值"你为什么还要这样做 在调用内部函数之前?如果代码在内部函数中,那么您确实有value return props.reduce((prop, result) => result + value[prop]) 或者你的value[arg1] + value[arg2] ... 实际上应该是什么。 【参考方案1】:
function trackByProps(...props) 
  return function (value) 
    return props.reduce((result, prop) => result + value[prop], "")
  

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

【讨论】:

在 FP 中,我们尽量让函数保持简单。你原来的功能很好。如果您想处理多个属性,只需 map 处理它们。

以上是关于如何根据javascript中未知数量的参数更改函数的主要内容,如果未能解决你的问题,请参考以下文章

Python - 动态更改参数数量[重复]

如何在 html 表中为未知数量的输入命名?

轻松学习 JavaScript——第 2 部分:函数中的 Rest 参数

如何根据它包含的标记数量在Android中更改集群图像?

根据数组中对象的数量更改 id (javascript/jquery)

arguments对象与Rest参数