JS按数组划分

时间:2016-06-24 00:28:57

标签: javascript arrays divide

您好我最近遇到一个问题,其中一个数组与另外两个参数(低和高)一起被送入函数。问题要求将数字从低到高除以数组中的每个值,如果所有值都可以被分割以打印数字和“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个数字),我一直在试图弄清楚如何解决这个问题。我对此比较陌生。我一直在尝试地图功能,但似乎无法弄清楚如何做到这一点。我还在循环中尝试了另一个for循环,但它只打印了两次。谢谢!

2 个答案:

答案 0 :(得分:0)

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");
        }
    }
}

答案 1 :(得分:0)

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;

相关问题