检查数组是否有大于指定的数字

Mai*_*ero 6 javascript arrays

我想编写一个函数,将数组作为参数并返回可以被 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 循环使它有点像意大利面?

Tru*_*yen 8

您可以先使用 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)