如何为任意数量的变量运行一种方法[重复]

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 是的,我在测试代码时才意识到这一点。感谢您指出。固定:-)

以上是关于如何为任意数量的变量运行一种方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用easymock,重复void方法调用

如何为每个 PHP 循环创建一个从表数据中设置变量的循环

用单个空格替换任意数量的空格[重复]

您将如何为任意键设计 JSON Schema?

反射机制-java面试题

反射和拷贝