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

问题描述 投票:43回答:17

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

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);

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

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

javascript arrays digits
17个回答
70
投票

为什么不这样做呢?

var n =  123456789;
var digits = (""+n).split("");

0
投票

这个问题已经有5年多了,但我总是欢迎使用有效的编码/脚本编写方式。

var n = 123456789;
var arrayN = (`${n}`).split("").map(e => parseInt(e))

0
投票

另一种方法。由于Javascript中的数字默认情况下不可拆分,因此您需要先将数字转换为字符串。

var n = 123;
n.toString().split('').map(Number);

0
投票

我最终解决了它如下:

const n = 123456789;
let toIntArray = (n) => ([...n + ""].map(Number));
console.log(toIntArray(n));

0
投票

它非常简单,首先使用JavaScript中的toString()方法将数字转换为字符串,然后使用split()方法将字符串转换为单个字符数组。

例如,数字是num,那么

const numberDigits = num.toString().split('');

0
投票

这将适用于大于0的数字。您不需要将数字转换为字符串:

function convertNumberToDigitArray(number) {
    const arr = [];
    while (number > 0) {
        let lastDigit = number % 10;
        arr.push(lastDigit);
        number = Math.floor(number / 10);
    }
    return arr;
}

0
投票
const number = 1435;
number.toString().split('').map(el=>parseInt(el));

0
投票
let input = 12345664
const output = []
while (input !== 0) {
  const roundedInput = Math.floor(input / 10)
  output.push(input - roundedInput * 10)
  input = roundedInput
}
console.log(output)

-1
投票

const toIntArray = (n) => ([...n + ""].map(v => +v))

45
投票
(123456789).toString(10).split("")

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

(123456789).toString(10).split("").map(function(t){return parseInt(t)})

^^这将返回一个int数组


30
投票

关于什么:

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

26
投票

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

代替:

(123456789).toString(10).split("").map(function(t){return parseInt(t)})

考虑:

(123456789).toString(10).split("").map(Number)

6
投票

修改了上面的答案一点点。我们实际上不必明确地调用'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]

3
投票

const toIntArray = (n) => ([...n + ""].map(v => +v))

1
投票

这是Nicolás Fantone答案的替代方案。你可能会说它可能有点不那么可读了。重点是Array.from()可以将可选的map函数作为参数。这种方式有一些性能提升,因为没有创建中间数组。

const n = 123456;
Array.from(n.toString(), (val) => Number(val)); // [1, 2, 3, 4, 5, 6]

0
投票

移动:

var k = Math.pow(10, i);

以上

var j = k / 10;

0
投票
var num = 123456789;
num = num.toString(); //'123456789'
var digits = num.split(""); //[ '1', '2', '3', '4', '5', '6', '7', '8', '9' ]
© www.soinside.com 2019 - 2024. All rights reserved.