如何在JavaScript中将整数分隔成数组中的单独数字?

mag*_*sbl 50 javascript arrays digits

到目前为止这是我的代码:

var n = 123456789;
var d = n.toString().length;
var digits = [];
var squaredDigits = [];
for (i = d; i >= 1; i--) {
    var j = k / 10;
    var r = (n % k / j) - 0.5;
    var k = Math.pow(10, i);
    var result = r.toFixed(); 
    digits.push(result);
}

console.log(digits);
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的代码时,我得到了这个: [9, 1, 2, 3, 4, 5, 6, 7, 8]

如果有人能看到问题或找到更好的解决方案,我将非常感激!

Nie*_*sol 78

为什么不这样做呢?

var n =  123456789;
var digits = (""+n).split("");
Run Code Online (Sandbox Code Playgroud)

  • 只是一个注释,这将给出一个字符串数组..而不是数字. (28认同)
  • (""+ num1).split('').map(Number)返回数字而不是字符串. (7认同)
  • 对于(var i = 0; i <digits.length; i ++){digits [i] = + digits [i]; }`也会将每个值转换为整数 (2认同)

sam*_*one 47

(123456789).toString(10).split("")
Run Code Online (Sandbox Code Playgroud)

^^这将返回一个字符串数组

(123456789).toString(10).split("").map(function(t){return parseInt(t)})
Run Code Online (Sandbox Code Playgroud)

^^这将返回一个int数组


Nic*_*one 39

关于什么:

const n = 123456;
Array.from(n.toString()).map(Number);
// [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

  • 很好的解决方案,清晰易懂,并利用ES6功能.也是推荐功能之一[这里](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map?v=control) (8认同)
  • `.map(Number)`非常好! (4认同)
  • 目前为止最好的答案 (2认同)

use*_*439 26

我意识到这是几个月前被问到的,但我对samccone的回答更加简洁,但我没有代表添加作为评论!

代替:

(123456789).toString(10).split("").map(function(t){return parseInt(t)})
Run Code Online (Sandbox Code Playgroud)

考虑:

(123456789).toString(10).split("").map(Number)
Run Code Online (Sandbox Code Playgroud)

  • 10在```.sString(10)```中到底做了什么?我知道它引用了基数10,但我已经测试过它有没有找不到可辨别的区别.谢谢!另外,酷编辑. (5认同)

Ale*_*der 12

修改了以上答案。我们实际上不必显式调用'map'方法,因为它已经作为第二个参数内置在'Array.from'中。从MDN开始

Array.from(arrayLike [,mapFn [,thisArg]])

let num = 1234;
let arr = Array.from(String(num), Number);
console.log(arr); // [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)


小智 5

const toIntArray = (n) => ([...n + ""].map(v => +v))
Run Code Online (Sandbox Code Playgroud)