我刚开始学习 JS,并且理解寻找因子的概念。然而,这段代码是我目前所拥有的。我有一个 str 变量,它只输出第一个因子 2。我试图将每个 (int) 作为因子列表添加到 str 中。下面的代码片段有什么问题?
function calculate(num) {
var str = "";
var int = 2;
if (num % int == 0) {
str = str + int;
int++;
} else {
int++;
}
alert(str);
}
calculate(232);
最佳答案
更新的 ES6 版本:
正如@gengns 在评论中建议的那样,生成数组的更简单方法是使用扩展运算符和键方法:
const factors = number => [...Array(number + 1).keys()].filter(i=>number % i === 0);
console.log(factors(36)); // [1, 2, 3, 4, 6, 9, 12, 18, 36]
ES6 版本:
const factors = number => Array
.from(Array(number + 1), (_, i) => i)
.filter(i => number % i === 0)
console.log(factors(36)); // [1, 2, 3, 4, 6, 9, 12, 18, 36]
https://jsfiddle.net/1bkpq17b/
Array(number)
创建一个包含 [number] 个位置的空数组Array.from(arr, (_, i) => i)
根据位置 [0,1,2,3,4,5,6,7,8,9] 用值填充空数组.filter(i => ...)
将填充的 [0,1,2,3,4,5] 数组过滤为满足number % i === 0
条件的元素只留下作为原始数字因数的数字。
请注意,您可以一直走到Math.floor(number/2)
。如果您处理大数字(或小数字),则出于效率目的。
关于javascript - 试图在 JS 中找到一个数字的因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130043/