如何为任意数量的变量运行一种方法[重复]
Posted
技术标签:
【中文标题】如何为任意数量的变量运行一种方法[重复]【英文标题】:How to run one method for any amout of varibles [duplicate] 【发布时间】:2021-09-07 05:51:20 【问题描述】:我想知道如何为传递给函数的所有参数运行一种方法并返回它们
这是我想要实现的示例:
const getAllData = (args) =>
args.map((arg)=> useDispatch(arg))
return args
例如在另一个文件中调用它
const [var1,var2,var3] = getAllData()
或
const allVars = getAllData([var1,var2,var3])
【问题讨论】:
getAllData = (...args) => args.map((arg)=> useDispatch(arg))
但是,我不知道为什么这比在不创建单独函数的情况下执行 [var1, var2, var3].map((arg)=> useDispatch(arg)
更好。
【参考方案1】:
您所写的内容非常接近 - 只需使用 rest params syntax 将 args 作为数组访问。下面是这个的processAll
版本,它可以接受处理函数和要处理的任意数量的变量,并将返回它们。通过运行 sn-p 来查看它的实际效果。
const one = 1;
const two = 2;
const three = 3;
function processAll(processor, ...args)
const processedArgs = args.map((arg) => processor(arg));
return processedArgs;
function multiplyByTwo(input)
return input * 2;
const [pTwo, pFour, pSix] = processAll(multiplyByTwo, one, two, three);
console.log(pTwo, pFour, pSix);
【讨论】:
"只需使用扩展运算符两个扩展 args。" 你所拥有的是 rest parameters syntax 它没有传播。 @VLAZ - 很好,谢谢;现在更新了。【参考方案2】:在 es6 中你可以使用 rest 参数!
// Example ----
function add(...nums)
// Here nums will be an array
const sum = nums.reduce((a, c) => a + c);
console.log(sum);
add(1,2,3);
【讨论】:
【参考方案3】:我认为您正在寻找arguments
object。您可以将任意数量的变量传递给函数,然后只需遍历 arguments
即可获取每个变量。
function getAllData()
return Array.from(arguments).map(arg => useDispatch(arg))
const allVars = getAllData(var1, var2, var3);
您也可以使用"rest parameters" 将参数作为数组获取。
const getAllData = (...args) => Array.from(args).map(arg => useDispatch(arg));
const allVars = getAllData(var1, var2, var3);
【讨论】:
箭头函数没有得到自己的arguments
,就像它们没有得到自己的this
一样——它们从封闭的上下文继承arguments
(如果有的话)。
@VLAZ 是的,我在测试代码时才意识到这一点。感谢您指出。固定:-)以上是关于如何为任意数量的变量运行一种方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章