我有一个像这样定义的数组:
var numbers = [11, 12, 13, 14, 15, 16, 17, 18];
我想检查这个数组中的所有数字是否都大于10,而我只想要一个输出。
我试过了:
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] > 10) {
console.log("Valid");
} else {
console.log("Not valid");
}
}
这给了我多个输出,因为它在循环内部,但我只想要一个有效的语句。
PS:抱歉这个noob问题。
答案 0 :(得分:4)
这个问题有很多解决方案。最简单的可能是创建一个函数:
var numbers = [11, 12, 13, 14, 15, 16, 17, 18];
function allNumbersLessThan10() {
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] > 10) {
return false
}
}
return true;
}
console.log(allNumbersLessThan10());
如果任何数字大于10,则所有数字都不能小于10,因此我们返回false
。
如果我们完成了循环中所有数字的评估,而我们还没有找到一个大于10的数字,那么所有数字必须小于10,所以我们返回true
。
答案 1 :(得分:4)
我个人更喜欢Array.prototype.every()
。
此函数为每个元素执行一次提供的回调,直到回调返回false
。如果发生这种情况,every()
函数将返回false
。
以下是一个例子:
var numbers = [11, 12, 13, 14, 15, 16, 17, 18];
function checkElements(element, index, array) {
return (element > 10);
}
if (numbers.every(checkElements)) console.log('Valid');
else console.log('Not valid');
详细了解every() function。
答案 2 :(得分:4)
正好在some()
function isBiggerThan10(element, index, array) {
return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10); // false
所以在你的情况下,你需要扭转这种逻辑。
function isSmallerThan10(element, index, array) {
return element < 10;
}
[2, 5, 8, 1, 4].some(isSmallerThan10); //true
其他选项是使用every()
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
答案 3 :(得分:-2)
试试这个:
numbers=["11","12","13","14","15","16","17","18"];
if (numbers[0] > 10 && numbers[1] >10 && numbers[2] > 10 && numbers[3] >10 && numbers[4] > 10 && numbers[5] >10 && numbers[6] > 10 && numbers[7] >10) {
console.log("Valid");
} else {
console.log("Not valid");
}
没有迭代,如果以不好的方式使用会损坏设备的使用寿命。