我想编写一个函数,将数组作为参数并返回可以被 12 整除的数字。但是,如果数组的数字大于 111,则它应该返回 0;我是这样写的:
function isDivisble(array) {
let numberOfNum = 0;
for(let i=0; i < array.length; i++) {
if(array[i] % 12 == 0 && array[i] < 111) {
numberOfNum = numberOfNum + 1 ;
} else {
numberofNum = 0;
}
}
return console.log(numberOfNum);
}
let test = [12, 24, 36, 44, 55, 255];
isDivisble(test)Run Code Online (Sandbox Code Playgroud)
我意识到这段代码单独检查当前数字是否可整除且不大于 111,而不是全局检查数组是否有大于 111 的数字,但我不明白如何进行一般数组检查。是否使用 if 语句编写 for 循环进行检查,然后在 if 语句中编写另一个 for 循环使它有点像意大利面?
您可以先使用 some 来检查是否有任何大于 111 的元素。然后你可以使用过滤器来获取可被 12 整除的元素。像这样:
const isDivisible = (arr) => {
if (arr.some((e) => e > 111)) return 0;
return arr.filter((e) => e % 12 === 0).length;
};
const test = [12, 24, 36, 44, 55, 48];
console.log(isDivisible(test));Run Code Online (Sandbox Code Playgroud)
小智 5
我稍微修改了你的函数,如果一个数字大于 111 则返回 0 否则它检查它是否可以被 12 整除
function isDivisble(array) {
let count = 0;
for(let i=0; i<array.length; i++){
if(array[i] > 111){
return 0;
}else{
if(array[i] % 12 === 0){
count++
}
}
}
return count;
}
let test = [12, 24, 36, 44, 55, 255];
console.log(isDivisble(test));Run Code Online (Sandbox Code Playgroud)