javascript - 试图在 JS 中找到一个数字的因数

标签 javascript

我刚开始学习 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/

相关文章:

javascript - 如何为标签输入创建自动完成框?

javascript - 如何在页面调整大小时对内联 block 项目的移动进行动画处理(最好使用 CSS)?

javascript - 使用 jQuery 在另外两个 div 周围创建包装器 div

javascript - 如何在继续脚本之前有效地等待链接文件完成运行

javascript - Vuejs 2 使用 accounting.js

JavaScript 变量在父类中丢失

javascript - 您如何处理具有不同高度的布局列?

javascript - 是否有一个明确的解决方案可以使用 jQuery 来验证 URL 而无需插件?

javascript - 使用 html5/javascript 将键盘设置为即使在 "go"按下时也保持打开状态?

javascript - Plyr视频播放器: How to expose/access multiple players?