javascript for循环,如果增量值不匹配则嵌套?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript for循环,如果增量值不匹配则嵌套?相关的知识,希望对你有一定的参考价值。

我这里有一些代码,它使用一个javascript onclick事件,该事件调用'inArray'函数并传递一个User-input值。我试图迭代数组,并将输入的'value'与数组中的一个值匹配。我不是要尝试返回'true / false'但是如果条件数组[i]等于传入它的值,那么我想执行'getElement'并放置相应的文本。

        function inArray(aValue) {
            var value = parseInt(aValue);
            var array = [1,2,3,4,5,6,7];
            for (i = 0; i < array.length; i++){
                if (array[i] === value) {
                    document.getElementById('primeOutput').innerhtml =
                            "yes, that's a prime below 200";
                }
              }
            document.getElementById('primeOutput').innerHTML =
                            "not a prime number below 200";
        }

我已经在屏幕上打印了返回类型,并且值和数组都是面数,打印时,它们的数字相同,那么为什么这会继续打印最后一个输出? (不是200以下的素数)注意:当我将if语句中的条件翻转为'!=='时,它会将第一个语句打印到html元素id'ed为'primeOutput'。

另外,正如您可能已经注意到的那样,我只是想将用户输入与200以下的素数列表进行比较。虽然有很多方法可以做到这一点,但我真的想找出为什么这段代码不会打印当我知道值在数组中并且两个数据类型都是数字时,第一个语句?

再次感谢您的任何详细解释。

答案

Medet的答案是正确的,但没有告诉你为什么你的代码不起作用。一旦找到匹配的元素,就会继续循环,无论如何都会调用函数的最后一行。没有办法阻止它抛出错误或提前返回。

您可以使用found变量来解决此问题:

function inArray(aValue) {
  var value = parseInt(aValue),
    array = [1, 2, 3, 4, 5, 6, 7],
    found = false;

  for (i = 0; i < array.length; i++) {
    if (array[i] === value) {
      found = true;
      break;
    }
  }

  if (found) {
    document.getElementById("primeOutput").innerHTML =
      "yes, that's a prime below 200";
  } else {
    document.getElementById("primeOutput").innerHTML =
      "not a prime number below 200";
  }
}

然而,有一种更简单的方法:

function inArray(aValue) {
  var value = parseInt(value),
    array = [1, 2, 3, 4, 5, 6, 7];

  return array.indexOf(value) !== -1
}

然后你可以使用这个true / false值在其他地方渲染输出:

function renderPrimeCheck(aValue) {
  if (inArray(aValue)) {
    document.getElementById("primeOutput").innerHTML =
      "yes, that's a prime below 200";
  } else {
    document.getElementById("primeOutput").innerHTML =
      "not a prime number below 200";
  }
}
另一答案
// credit: https://stackoverflow.com/a/40200710/2308005
function isPrime(num) {
  for(var i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num !== 1;
}
function inArray(aValue) {
    var value = parseInt(aValue);
    if (value < 200) {
        if (isPrime(value)) {
             document.getElementById('primeOutput').innerHTML = "yes, that's a prime below 200";
        } else {
             document.getElementById('primeOutput').innerHTML = "not a prime number below 200";
        }
    }

以上是关于javascript for循环,如果增量值不匹配则嵌套?的主要内容,如果未能解决你的问题,请参考以下文章

For循环不打印C++中的最后一个向量值

MATLAB中for循环变量值不增加

javascript中的几种循环

for循环和while循环的区别?

for循环和while循环的区别?

如果for循环不匹配,如何添加空白表格单元格?