我如何打破函数内部的循环并 return 该函数的值? (Javascript)
How do I break a loop inside the function and return a value for that function? (Javascript)
我想在这里打破 for 循环和 return false 这样它就不会继续用数组的其余元素和 return 我不想要的值来测试条件它到 return。
这是一个代码,应该测试小于 100 的质数对数字的整除性。
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
var primetest = function (a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
} else {
return true;
}
}
}
您的代码的问题不在于它不会在您希望它退出时退出,而是它即使在您不希望它退出时也会退出。
在 else
的情况下不要 return 任何东西,而是等到循环完成 return 结果是在循环中找不到匹配项:
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
function primetest(a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
}
return true;
}
}
你的问题是两个 return
语句都在循环内,因此循环将始终只执行第一次迭代,然后执行 return。它永远不会测试数组中第一个元素以外的任何元素。
解决方案:将其中一个语句移出循环,以便检查所有数组元素,如果 none 匹配,则执行另一个 return 语句:
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
var primetest = function (a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
}
}
return true;
}
我想在这里打破 for 循环和 return false 这样它就不会继续用数组的其余元素和 return 我不想要的值来测试条件它到 return。 这是一个代码,应该测试小于 100 的质数对数字的整除性。
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
var primetest = function (a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
} else {
return true;
}
}
}
您的代码的问题不在于它不会在您希望它退出时退出,而是它即使在您不希望它退出时也会退出。
在 else
的情况下不要 return 任何东西,而是等到循环完成 return 结果是在循环中找不到匹配项:
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
function primetest(a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
}
return true;
}
}
你的问题是两个 return
语句都在循环内,因此循环将始终只执行第一次迭代,然后执行 return。它永远不会测试数组中第一个元素以外的任何元素。
解决方案:将其中一个语句移出循环,以便检查所有数组元素,如果 none 匹配,则执行另一个 return 语句:
var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
var primetest = function (a) {
for (i = 0; i < primenumbers.length; i += 1) {
if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
return false;
}
}
return true;
}