您好我最近遇到一个问题,其中一个数组与另外两个参数(低和高)一起被送入函数。问题要求将数字从低到高除以数组中的每个值,如果所有值都可以被分割以打印数字和“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循环,但它只打印了两次。谢谢!
答案 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函数,它使代码更具可读性。
every
,some
和filter
。
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;