【问题标题】:How to set a button to execute a for loop?如何设置一个按钮来执行一个for循环?
【发布时间】:2019-07-03 02:07:04
【问题描述】:

我的代码从第一个数组中的第一项开始并遍历第二个数组。如果第一个数组中的第一项与第二个数组中的项相同,则将值打印到控制台。所以在这个 sn-p Nandos 和 KFC 应该打印到控制台。

一旦第一个数组中的第一项与第二个数组中的所有项进行了比较,我们将移动到第一个数组中的第二项并将其与第二个数组中的所有项进行比较。

单击按钮后,我想执行 for 循环。

我试图使 for 循环成为一个函数,并在单击按钮后执行该函数,但什么也没发生。

<button id="search">Search</button>
var restaurantsOne = ["Nandos", "King Rooster", "Chick-Fil-A", "Dominos", "KFC"];
var restaurantsTwo = ["Nandos","MacDonalds","Burger King","KFC","Pizza Hut"];
  for (var i=0; i<=restaurantsOne.length; i++) {
    for (var j=0; j<=restaurantsTwo.length; j++){
      if (restaurantsOne[i] == restaurantsTwo[j]){
        console.log(restaurantsOne[i]);
      }
    }
  }

我希望在单击按钮后执行 for 循环

【问题讨论】:

  • 您可以取消循环并执行restaurantsOne.filter(x =&gt; restaurantsTwo.includes(x))
  • 我不需要它们来获得我想要的结果,即找到两个数组中相互关联的餐厅
  • 不是过滤器在做什么,它会循环,并检查 x 是否也在另一个数组中,如果不是,那么它不会被包含在内。虽然你的循环很好,如​​果它有效

标签: javascript arrays for-loop


【解决方案1】:

您尚未将按钮链接到循环!将循环包装在一个函数中,然后将“onclick”处理程序添加到引用循环函数的按钮。

var restaurantsOne = ["Nandos", "King Rooster", "Chick-Fil-A", "Dominos", "KFC"];
var restaurantsTwo = ["Nandos","MacDonalds","Burger King","KFC","Pizza Hut"];

function compareArrays () {
  for (var i = 0; i < restaurantsOne.length; i++) {
    for (var j = 0; j < restaurantsTwo.length; j++){
      if (restaurantsOne[i] == restaurantsTwo[j]){
        console.log(restaurantsOne[i]);
      }
    }
  }
 }
&lt;button id="search" onclick="compareArrays()"&gt;Search&lt;/button&gt;

另外,值得一提的是,您应该使用 i &lt; restaurantsOne.length 而不是 i &lt;= restaurantsOne.length,因为数组索引从 0 开始,而 array[array.length] 实际上将引用一个不存在的索引。

即。

restaurantsOne.length // 5

restaurantsOne[0] // Nandos
restaurantsOne[1] // King Rooster
restaurantsOne[2] // Chick-
restaurantsOne[3] // Dominoes
restaurantsOne[4] // KFC
restaurantsOne[5] // undefined

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2019-03-05
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多