我需要一个给定数字(例如123)的函数,该函数将输出数组[100,20,3]。我已经尝试过类似的事情(从另一个关于SO的问题中借来的):
function separateNumberIntoUnits(n) { var arr = []; var i = 10; while (n > i / 10) { arr.unshift(n % i - n % (i / 10)); i *= 10; } return arr; }
它适用于除10、100等以外的所有数字。我试图弄清楚发生了什么,但是数学不是我的强项...
如果有更有效的方法可以执行此操作,请随时编写自己的解决方案。
我认为这是最有效的方法:
function separateNumberIntoUnits(n) {
if (n == 0) return [0];
// n = Math.floor(n); // needed for decimal numbers
var arr = [];
var i = 1;
while (n > 0) {
arr.unshift((n % 10) * i);
n = Math.floor(n / 10);
i *= 10
}
return arr;
}
document.writeln(separateNumberIntoUnits(1234) + "
")
document.writeln(separateNumberIntoUnits(100) + "
")
document.writeln(separateNumberIntoUnits(10) + "
")
document.writeln(separateNumberIntoUnits(1) + "
")
document.writeln(separateNumberIntoUnits(0) + "
")