在 for 循环中加载函数 - 变量函数名[变量]



是否可以将函数命名为数组[x]?

我寻找一种解决方案来在 for 循环中加载不同的函数。 我将像这个函数名称一样声明函数。然后我将调用带有数组 = ["name", ...] 的 foor 循环中的函数;

function functionname["aaa"]() {
console.log("is for aaa");
}
array = ["aaa", "bbb", "ccc"];
for (var i = 0; i < array.length; i++) {
functionname[array[i]]();
}

您可以将函数分配为对象的成员:

let myObj = {
"aaa": function () {
console.log("is for aaa");
},
"bbb": function () {
console.log("is for bbb");
}
};
myObj["ccc"] = function () {
console.log("is for ccc");
};
array = ["aaa", "bbb", "ccc"];
for (var i = 0; i < array.length; i++) {
myObj[array[i]]();
}

因此,如果我理解正确,您希望遍历函数数组,调用位于循环中当前迭代索引处的数组中的函数。

我不知道您的目标是什么,但这里有一种可能的解决方案,尽管有几种方法可以解决这个问题:

const aaa = () => console.log('aaa');
const bbb = () => console.log('bbb');
const ccc = () => console.log('ccc');
const array = [aaa, bbb, ccc];
for (var i = 0; i < array.length; i++) {
array[i]();
}

您可以创建函数的查找表。

let functionname = {
"aaa": () => {
console.log("is for aaa")
},
"bbb": () => {
console.log("is for bbb")
}
};

不带箭头函数:

var functionname = {
"aaa": function aaa() {
console.log("is for aaa");
},
"bbb": function bbb() {
console.log("is for bbb");
}
};

试试这个:

以这种方式执行此操作,否则需要使用 eval 或函数构造函数等函数来解析字符串。

function commonfunction(name){
console.log('is for '+name);
}
var array = ["aaa", "bbb", "ccc"];
array = array.map((name)=>()=>commonfunction(name));
array.forEach((_newFunction)=>_newFunction());

最新更新