如何在单击按钮时从数组javascript调用函数

问题描述 投票:0回答:2

我是javascript新手,遇到了问题。我有一个函数数组:

allFunctions = () => [
  function1(),
  function2(),
  function3(),
  function4(),
  function5(),
  function6(),
  function7(),
  function8(),
  function9()
]

现在,我想运行此功能,并查看哪个功能产生“ true”值。如果是这样,我只想在单击按钮时重用该功能。

因此,如果我调用allFunctions(),我的输出将是:

[false, false, false, true, false, false, false, false, false]

我想以某种方式重新调用在单击按钮时具有真正价值的功能?谁能帮助我,或者至少让我朝正确的方向发展。预先感谢。

javascript arrays function
2个回答
0
投票
您应该在不调用函数的情况下创建函数数组(调用它们将创建结果数组)。现在,您可以使用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())

0
投票
如果我正确理解的话,简单的实现。考虑两个按钮。

<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

© www.soinside.com 2019 - 2024. All rights reserved.