我是javascript新手,遇到了问题。我有一个函数数组:
allFunctions = () => [
function1(),
function2(),
function3(),
function4(),
function5(),
function6(),
function7(),
function8(),
function9()
]
现在,我想运行此功能,并查看哪个功能产生“ true”值。如果是这样,我只想在单击按钮时重用该功能。
因此,如果我调用allFunctions(),我的输出将是:
[false, false, false, true, false, false, false, false, false]
我想以某种方式重新调用在单击按钮时具有真正价值的功能?谁能帮助我,或者至少让我朝正确的方向发展。预先感谢。
Array.find()
(获取第一个返回true
的函数)或Array.find()
(获取所有返回true
的函数)的数组: const fnFalse = () => false
const fnTrue = () => true
const allFunctions = [fnFalse, fnFalse, fnFalse, fnFalse, fnFalse, fnTrue, fnFalse, fnFalse, fnFalse]
const trueFn = allFunctions.find(fn => fn())
console.log(trueFn.name, trueFn())
您可以使用allFunctions
对使用Array.indexOf
生成的数组执行相同的操作:const fnFalse = () => false const fnTrue = () => true const fns = [fnFalse, fnFalse, fnFalse, fnFalse, fnFalse, fnTrue, fnFalse, fnFalse, fnFalse] const allFunctions = () => [fnFalse(), fnFalse(), fnFalse(), fnFalse(), fnFalse(), fnTrue(), fnFalse(), fnFalse(), fnFalse()] const trueFn = fns[allFunctions().indexOf(true)] console.log(trueFn.name, trueFn())
<button type="button" id="find">Find</button>
<button type="button" id="search">Search</button>
和JS
var functions = { find: function() { alert("finding..."); }, search: function() { console.log("searching..."); } }; document.getElementById ("find") .addEventListener ("click", handleClick); document.getElementById ("search") .addEventListener ("click", handleClick); function handleClick(event) { functions[event.target.id](); }
您可以为其添加更多逻辑。示例jsfiddle