Как преобразовать целое число в массив цифр

Я хочу преобразовать целое число, скажем 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 ;

Ответ 1

Я бы пошел с

var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);

Вы можете опустить replace, если вы уверены, что n не имеет десятичных знаков.

Ответ 2

var n = 12345;
var arr = ('' + n).split('').map(function(digit)  {return +digit;});

Однако функция карты поддерживается только последними браузерами.

Ответ 3

Я бы сделал это, чтобы избежать использования строк, когда они вам не нужны:

var n = 12345;
var arr = [];
while(n>0){arr.unshift(n%10);n=n/10|0;}

Ответ 4

**** 2019 Ответ ****

Array.from(String(12345), Number);

пример

const numToSeparate = 12345;

const arrayOfDigits = Array.from(String(numToSeparate), Number);

console.log(arrayOfDigits);   //[1,2,3,4,5]

Ответ 5

Я сначала преобразовал число в строку, а затем использовал Array.from() для преобразования строки в массив.

let dataArray = Array.from(value.toString());

Ответ 6

Запускаемый фрагмент:

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

Ответ 7

Сначала целое число преобразуется в строку & затем в массив. Используя функцию карты, отдельные строки конвертируются в числа с помощью функции parseInt. Наконец, этот массив возвращается как результат.

const digitize = n => [...'${n}'].map(i => parseInt(i));