我有一个脚本,其中包含一个生成数字0-9的for循环。该脚本还包括一个函数,用于检查for循环生成的数字是否可被3或5整除。如果它们是可整除的(例如9可被3整除),则if / else语句返回true,如果它们是不可分割,条件语句返回false。
我想要实现的是,当条件语句返回true时,应该将数字添加到空数组中。
在这种情况下,期望的结果是:
var myArray = [0, 3, 5, 6, 9];
这是我目前的代码:
var isDivisibleArray = [];
for(var i = 0; i < 10; i++) {
isMultiple(i);
}
function isMultiple() {
var isMultipleOf3 = i % 3;
var isMultipleOf5 = i % 5;
if(isMultipleOf3 === 0 || isMultipleOf5 === 0) {
return true;
}
else {
return false;
}
}
isMultiple();
我使用模数运算符来确定一个数字是否可以用3或5整除,因为如果x%3 = 0,x可以用3整除,例如。
我也做了一些实验。如果我这样做是for循环,我可以设法使用警报打印结果:
for(var i = 0; i < 10; i++) {
alert(isMultiple(i));
}
结果是T,F,F,T,F,T,T,F,F,T。
我也在条件语句中尝试了这种方法:
if(isMultipleOf3 === 0 || isMultipleOf5 === 0) {
isDivisibleArray.push(i);
}
这没有成功。非常感谢所有帮助!
这应该工作:
var isDivisibleArray = [];
for(var i = 0; i < 10; i++) {
if(isMultiple(i)) {
isDivisibleArray.push(i);
}
}
function isMultiple(i) {
return i % 5 === 0 || i % 3 === 0
}
不需要单独的功能。此外:
if(isMultipleOf3 === 0 || isMultipleOf5 === 0) {
return true;
}
else {
return false;
}
可以简单地写成:
return isMultipleOf3 === 0 || isMultipleOf5 === 0;
整个解决方案简单如下:
var isDivisibleArray = [];
for(var i = 0; i < 10; i++) {
if (i%3 === 0 || i%5 === 0) isDivisibleArray.push(i);
}
console.log(isDivisibleArray); //[ 0, 3, 5, 6, 9 ]
错误是你实际上没有推送到数组,只调用要检查的函数 - 但是你忽略了结果。
您可以将此代码放入可以使用不同参数调用的函数中,从而使代码更短且可重用
function createArray(min = 0, max = 9, divisibleBy = [3, 5]) {
return [...Array(max + 1).keys()]
.filter(e => e >= min && divisibleBy.some(i => e % i === 0))
}
console.log(createArray());
// same as createArray(0, 9, [3, 5])
let isDivisibleArray = [];
for(var i = 0; i < 10; i++) {
if(isMultiple(i)=== true){
isDivisibleArray.push(i)
}
}
function isMultiple(i) {
var isMultipleOf3 = i % 3;
var isMultipleOf5 = i % 5;
if(isMultipleOf3 === 0 || isMultipleOf5 === 0) {
return true;
}
else {
return false;
}
}
试试这个