我知道标题听起来很混乱。
考虑这样的代码段
function foo(){
...
}
var arr = [foo(1),foo(2),foo(3),...]
我想找到一种方法来从arr
数组中检索这些参数,以获得类似的结果
[1,2,3,...]
有人可以帮我吗?
答案 0 :(得分:1)
通常,这种操作是相反的方法。您可以声明
var arr = [1,2,3,...]
var foos = arr.map(n => foo(n))
现在您可以访问原始参数和foo结果。
答案 1 :(得分:0)
正如其他答案所建议的那样,最好在传递参数之前存储它们。
或者,填充数组的最简单方法是返回以前传递的参数,如下所示:
function foo(arg) {
//does things
return arg;
}
let arr = [foo(1), foo(2), ...]
如果该函数用于返回其他内容,则可以通过返回如下对象来返回一些内容:
function foo(arg){
//does things
return {
thing: thing,
arg: arg
};
}
let arr = [foo(42).arg, ...]
哪种方式来回传递相同的信息,据我了解,这正是您所要求的。
答案 2 :(得分:-1)
如果您尝试获取一个单一参数列表:
function foo() {
/* .. */
return arguments[0]
}
console.log([foo(1), foo(2), foo(3)]) // [1,2,3]
但这不适用于多个:
function foo() {
/* .. */
return arguments[0]
}
console.log([foo(1), foo(2,3), foo(4,5)]) // [1,2,4]
这将把每个args放在一个数组上
function foo() {
/* .. */
return arguments
}
console.log([...foo(1), ...foo(2,3), ...foo(4,5)]) // [1,2,3,4,5]
如果您不想使用return
语句:此示例将把所有参数放在全局数组上。
let all_args = []
function foo() {
Array.from(arguments).forEach(a => {
all_args.push(a)
})
/*..*/
}
foo(1)
foo(2)
foo(3,4)
console.log("args:", all_args); // [1,2,3,4]
foo(5)
console.log("args:", all_args); // [1,2,3,4,5]
all_args = [] // Reset
foo(1,1,2,3,5)
console.log("args:", all_args); // [1,1,2,3,5]
答案 3 :(得分:-2)
我认为您正在寻找的是Javascript中的参数。
请查看以下文档,这些文档应为您指明正确的方向/为您提供所需的答案。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments