你好,我最近遇到了一个问题,在这个问题中,一个数组和两个其他参数(低和高)一起被输入一个函数。所要求的问题是将数字从低到高除以数组中的每个值,如果所有值都可以被除以以打印数字和"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循环,但它只打印了两次。谢谢!
发布于 2016-06-24 00:46:48
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");
}
}
}发布于 2016-06-24 01:10:31
您可以使用这些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);
https://stackoverflow.com/questions/38003942
复制相似问题