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

循环的javascript,如果增量值不匹配则嵌套?,javascript,arrays,loops,for-loop,iteration,Javascript,Arrays,Loops,For Loop,Iteration,我这里有一段代码,它利用javascript onclick事件调用'inArray'函数并传递用户输入值。我试图遍历数组,并将输入的“值”与数组中的一个值进行匹配。我不想返回'true/false',但是如果条件数组[I]等于传递给它的值,那么我想执行'getElement'并放置相应的文本 function inArray(aValue) { var value = parseInt(aValue); var array = [

我这里有一段代码,它利用javascript onclick事件调用'inArray'函数并传递用户输入值。我试图遍历数组,并将输入的“值”与数组中的一个值进行匹配。我不想返回'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";
        }
函数inaray(aValue){
var值=parseInt(aValue);
var数组=[1,2,3,4,5,6,7];
对于(i=0;i
我已经在屏幕上打印了返回类型,值和数组都是面数字,打印时,它们等于相同的数字,那么为什么要继续打印最后的输出呢?(不是低于200的质数)注意:当我将if语句中的条件翻转为“!=”,它将第一条语句打印到html元素id'ed作为'primeOutput'

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

再次感谢您的详细解释

//信用:https://stackoverflow.com/a/40200710/2308005
// 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";
        }
    }
函数isPrime(num){ 对于(变量i=2;i
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";
  }
}
然后,您可以使用此
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";
  }
}

因为
“不是低于200的素数”
在循环之外-没有条件,它总是执行的,可能意味着
返回;
内部
如果
。您可能需要先检查
值<200
,因为大值将使
isPrime
需要一段时间才能解释…?如果您只是想提供一个替代方案,请标记为重复的问题的答案是从。我喜欢你如何分开的功能和渲染!
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";
  }
}