我想根据功能名称决定要使用的功能子集中的哪个功能。
例如:
methodArray = [method1() {},
secondMethod() {},
thirdMethod() {}]
getTheRightMethod(i: string){
for (const method of methodArray) {
if (method.name.includes(i)) {
return method;
}
}
}
getTheRightMethod('second');
在这种情况下,结果应为secondMethod()
。
其他问题 我的下一个问题是我的函数返回Observables。我想要的是一个指向函数的指针数组。这可能吗?
答案 0 :(得分:0)
您必须声明命名函数才能起作用:
const methodArray = [function one() { return 1; }, function two() { return 2; }, function three() { return 3; }];
function getRightMethod(str) {
for (const method of methodArray) {
if (method.name.includes(str)) {
return method;
}
}
return null;
}
console.log(getRightMethod('two')());
答案 1 :(得分:0)
以下内容将使它们命名为函数,从而使您的代码正常运行,从而解决了语法错误。
methodArray = [
function method1() {},
function secondMethod() {},
function thirdMethod() {}
]
答案 2 :(得分:0)
您的代码非常接近,只需进行调整:
/* Declare each "method" function in the array */
let methodArray = [
function method1() {
alert('first item')
},
function secondMethod() {
alert('second item')
},
function thirdMethod() {
alert('third item')
}
];
function getTheRightMethod(i) {
/* Iterate through array searching for first match */
for (const method of methodArray) {
/* Add missing ) after includes(i) */
if (method.name.includes(i)) {
return method;
}
}
}
/* Demonstrate this works by calling returned function */
getTheRightMethod('second')();