gpt4 book ai didi

JavaScript:将字符串数组转换为变量数组并将其作为参数传递给函数

转载 作者:行者123 更新时间:2023-12-03 04:23:43 24 4
gpt4 key购买 nike

我有一个数组,例如:

argumentsArray = ["arg1", "arg2"];

我有一个功能:

function1 = function () {
console.log(arg1);
console.log(arg2);
};

现在当然执行function1会抛出错误,因为 arg1arg2没有定义。但我不想定义这些,我希望它们用作参数,如下所示:

function1 = function (arg1, arg2) {
console.log(arg1);
console.log(arg2);
};

现在我们可以执行function1当我们向它传递两个参数时:

function1("string1", "string2");
// will log "string1" and "string2"

但问题是,我无法更改 function1 的源代码。我无法编辑它的参数。我知道bind()apply()函数,但他们会做错误的事情,因为实际上应用了字符串:

getFunction1WithArgumentsFromArray = function () {
return function () {
return function1.apply(this, argumentsArray);
};
};

getFunction1WithArgumentsFromArray();
// would return function1("arg1", "arg2");

问题是,arg1arg2尚未定义。它们还不是字符串或任何其他东西。我的代码看起来像这样:

function1 = function () {
console.log(arg1);
console.log(arg2);
};

argumentsArray = ["arg1", "arg2"];

defineArgs = function() {
arg1 = "hey";
arg2 = "hello";
};

getFunction1WithArgumentsFromArray = function (argumentsArray) {
argumentsToUse = convertArrayOfStringsToArrayOfVariables(argumentsArray);
// HOW???

return function () {
return function1(argumentsToUse[0], argumentsToUse[1]);
};
// or what should i put here???
};

getFunction1WithArgumentsFromArray();
// should return this:
// function1 = function(arg1, arg2) {
// console.log(arg1);
// console.log(arg2);
// };
// without executing it.

所以我真正想要的是一个函数,它将字符串数组转换为具有这些字符串名称的变量数组:

["arg1", "arg2"] --> [arg1, arg2]

但是直接这样做会出现问题,因为 JavaScript 随后会搜索这些变量。正如我所说,这些变量没有定义......

<小时/>

我认为我有一个方法是使用 apply()并传递一个数组 with eval("string")就像这样:

getFunction1WithArgumentsFromArray = function () {
return function () {
return function1.apply(
this,
[eval(argumentsArray[0]), eval(argumentsArray[1])]
);
};
};

getFunction1WithArgumentsFromArray();
// would return "arg1 is not defined", because eval() executes the function as I define it
<小时/>

这对您来说可能看起来非常非常不必要,但正如我已经说过的,我无法更改 function1所以我必须在另一个函数中创建它的参数列表。我的意思是,我当然可以更改它,但是我正在从事的项目使用数组来获取参数。

最佳答案

正如我在评论中所说,定义 arg1 和 arg2 似乎是不必要的,因为无论您在何处创建对象,您都必须已经持有对它的一些引用。

当您将它们传递给 function1 时,您可以轻松访问这样的参数

function1 = function () {
var i;
for(i=0; i<arguments.length;i++){
console.log(arguments[i]); // do anything with arguments[i] == arg1, arg2,
...
}
};

关于JavaScript:将字符串数组转换为变量数组并将其作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com