将整数转换为数字数组的方法

48

我想将一个整数,比如12345,转换为类似于[1,2,3,4,5]的数组。

我已经尝试了下面的代码,但有没有更好的方法?

var n = 12345;
var arr = n.toString().split('');
for (i = 0; i < arr.length; i++) arr[i] = +arr[i] | 0;

一种更简单的方法是使用.map(Number).map(parseInt),但这不会像您的位运算那样将NaN转换为0 - Bergi
1
为什么需要 |0 - nnnnnn
1
@Bergi 在IE8中也不支持.map(Number) - Nick Orlando
1
实际上,你的代码很好,因为它是所有提出的解决方案中最快的... - Bergi
@Bergi.. 是的.. map 函数很慢 ._. - Psych Half
关于代码审查/代码改进的问题应该在[codereview.se]上提问。 - Wouter J
23个回答

-1
这是我通常用于此的两种方法。第一种方法:
function toArr1(n) {
    "use strict";
    var sum = 0;    
    n = Array.from(String(n), Number); 
       /*even if the type of (n) was a number it will be treated as a string and will 
    convert to an Array*/
    for (i = 0; i < n.length; i += 1) {
        sum += n[i];
    }
    return sum;
}

第二种方法:
function toArr2(n) {
    var sum = 0;
    n = n.toString().split('').map(Number);
    for (i = 0; i < n.length; i += 1) {
        sum += n[i]; 
    }
    return sum;
}

两种方法都会失败,因为sum未定义导致了ReferenceError - gurisko
是的,我忘记声明sum为“sum = 0;”,我会进行编辑,感谢您审查我的答案。 - Islam AbdelHakiim

-1
你可以直接使用String()方法。它将转换为字符串,但你仍然可以按数字的方式使用它们。
但是如果你想要数据作为字符串数组。

let val = 1458;
let numbers = String(val);
console.log("First response => ",numbers);
let fromNumberToArray = [...val.toString()].map(Number);
console.log("Second response => ",fromNumberToArray)


-3

这样就可以了。

let n = 1234;
console.log(n.toString().split(''));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接