JS除以数组

JS dividing by array

你好,我最近遇到一个问题,其中将数组与其他两个参数(低和高)一起馈送到函数中。该问题要求将数字从低到高除以数组中的每个值,如果所有值都可以整除以打印数字和 "all_match" 以及是否只有一个或一些可以整除以打印数字和 "one_match",否则只打印数字。所以我认为有两个数字的数组的解决方案如下:

function dividedByArray(data,low,high) {
    for (i=low; i<=high; i++) {
        if (i % data[0] === 0 && i % data[1] === 0) {
            console.log(i + " all_match")
        } else if (i % data[0] === 0 || i % data[1] === 0) {
            console.log(i + " one_match")
        } else {
            console.log(i)
        }
    }
}

dividedByArray([2,3],5,10)

我一直在想如果你不知道数组有多长(假设数组是 4 个数字),你将如何做这道题。我对此比较陌生。我一直在尝试 map 功能,但似乎无法找到实现它的方法。我还在循环中尝试了另一个 for 循环,但它只打印了两次。谢谢!

function dividedByArray(data,low,high) {
    for (i=low; i<=high; i++) {
       var passed = 0;
        for(var curr in data) {
           if(i % data[curr] === 0) {
             passed++;
           }
        }
        switch(passed) {
         case data.length :
              console.log(i + 'all_match');
              break;
         case 0 :
              console.log(i)
              break;
         default:
              console.log(i + " one_match");
        }
    }
}

您可以使用那些 Array 函数,它使代码更具可读性。 everysomefilter

function dividedByArray(data,low,high) {
  Array.from({length : high - low + 1}, (el,i) => low + i)
  .forEach(number=>{
    if(data.every(item=> item % number === 0))
      console.log(number, 'ALL MATCH');
    else if(!data.some(item=> item % number === 0))
      console.log(number, 'NO MATCHES');
    else
      console.log(number, 'MATCH :', data.filter(item=> item % number === 0));
  });
}

dividedByArray([5, 15, 10],5,10);