【发布时间】:2019-06-16 12:52:03
【问题描述】:
我正在尝试将数组返回一个符合两个 if 语句的数字数组。提示来自 leet 代码“自除数”,它要求接受两个参数,一个下限和一个上限,并检查该范围内的每个数字是否可以被每个数字的数字整除。
当我 console.log(num) (注释掉的部分,我得到一个正确的数字列表,但不是数组格式。为了解决这个问题,我想在推送数组后添加一个变量、结果和返回结果结果在 for 循环中。但是,当我这样做时,我只能得到数组中的第一个正确项,而不是完整的数组。
如何解决这个问题?我尝试在不同的位置移动 return 语句,但这并没有解决问题。
函数应该返回 [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22];
function selfDividingNumbers(left, right) {
for (let j = left; j <= right; j++) {
let num = j;
let result = []
let strNum = num.toString();
let dividingDigit = 0;
for (let i = 0; i < strNum.length; i++) {
if (num % parseInt(strNum[i]) == 0) {
dividingDigit++;
}
if (dividingDigit == strNum.length) {
result.push(num)
//console.log(num)
}
}
return result
}
};
console.log(selfDividingNumbers(1, 22));
【问题讨论】:
-
您需要将结果(声明和返回)移到 for 循环之外。
标签: javascript arrays algorithm