测试数组中的数字

时间:2018-01-15 04:42:07

标签: javascript

然而,.length和数组的值是随机分配的。更具体地,a()随机地将anArray.length分配给随机值1-3,并且其中的值也被随机分配值1-3。在numTester()执行后,我在anArray内编码a()进行了2次测试。



var anArray = [];
var numTester = function(aryParam, v) {

  var i;
  for (i = 0; i < aryParam.length; i++) {

    if (aryParam[i] == v) {

      return true;

    }

    return false;

  }

};
var a = function() {

  b = 0;

  c = setInterval(function() {

    b++;
    d = Math.floor(Math.random() * 3) + 1;
    anArray.push(d);

    if (b == d || b == 3) {

      clearInterval(c);
      document.write(anArray.join(", "), "<br />", numTester(anArray, 2));

    }

  }, 1);

};
a();
&#13;
&#13;
&#13;

如果2是数组中的1,2或3个数字中的任何一个,则

numTester()应返回true。问题是我发现如果数组的第一个数字是2,它只会返回true。为什么会这样?

var anArray = [];
var numTester = function(aryParam, v) {

    var i;
    for(i = 0; i < aryParam.length; i++) {

        if(aryParam[i] == v) {

            return true;

        }

        return false;

    }

};
var a = function() {

    b = 0;

    c = setInterval(function() {

        b++;
        d = Math.floor(Math.random() * 3) + 1;
        anArray.push(d);

        if(b == d || b == 3) {

            clearInterval(c);
            document.write(anArray.join(", ") + "<br />", numTester(anArray, 2));

        }

    }, 1);

};
a();

3 个答案:

答案 0 :(得分:1)

你在for循环中返回false,你的循环只会迭代一次,需要将它移到for循环之外。

var numTester = function(aryParam, v) {

    var i;
    for(i = 0; i < aryParam.length; i++) {
        if(aryParam[i] == v) {
            return true;
        }

        return false; <-- remove this
    }
    return false; <-- put it here
}

答案 1 :(得分:1)

是的,好好了解一下if (aryParam[i] == v) { return true; } return false; 循环:

true

其正文中的代码是:

false

这意味着它会在第一次迭代上返回return false for (i = 0; i < aryParam.length; i++) { if (aryParam[i] == v) { return true; } } return false;

解决方案:

移动循环的QDBusMessage::createMethodCall

QDBusMessage

答案 2 :(得分:0)

您可以使用array.find

var numTester = function(aryParam, v) {
  return aryParam.find((ar) => ar == v) && true || false;
};