然而,.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;
如果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();
答案 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;
};