如何搜索函数数组并执行匹配到的函数?代码匹配成功却未执行
解决方法:搜索函数数组并执行匹配的函数
嘿,我看到你的问题了——你已经成功定位到了名称匹配的函数,但执行部分的代码写错啦!咱们一步步来修正:
原代码的问题
你在找到匹配函数后写了 valid_input_array.search,这行代码完全起不到执行函数的作用:valid_input_array 是数组,它根本没有 search 这个属性,所以这行相当于啥都没做。
修正后的循环版本
只需要把执行的那行改成调用找到的函数就行,也就是给函数加括号 ():
var search = 'test'; var valid_input_array = [ function test(){console.log('test');}, function abc(){console.log('abc');} ]; for (i = 0; i < valid_input_array.length; i++) { if (valid_input_array[i].name === search) { // 直接调用匹配到的函数 valid_input_array[i](); // 如果只需要执行第一个匹配的函数,可以加break跳出循环 break; } }
更简洁的ES6写法
如果你用的是现代JavaScript环境,用Array.find()方法可以更优雅地实现,不用手动写循环:
const search = 'test'; const valid_input_array = [ function test(){console.log('test');}, function abc(){console.log('abc');} ]; // 找到名称匹配的函数 const matchedFunction = valid_input_array.find(fn => fn.name === search); // 如果找到函数,就执行它 if (matchedFunction) { matchedFunction(); }
这样就能完美执行到你找到的函数啦!
内容的提问来源于stack exchange,提问作者S0me0neRand0m
相关产品推荐
相关产品推荐

