如何根据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中未知数量的参数更改函数的主要内容,如果未能解决你的问题,请参考以下文章
轻松学习 JavaScript——第 2 部分:函数中的 Rest 参数