Ответ 1
Я бы пошел с
var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);
Вы можете опустить replace
, если вы уверены, что n
не имеет десятичных знаков.
Я хочу преобразовать целое число, скажем 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 ;
Я бы пошел с
var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);
Вы можете опустить replace
, если вы уверены, что n
не имеет десятичных знаков.
var n = 12345;
var arr = ('' + n).split('').map(function(digit) {return +digit;});
Однако функция карты поддерживается только последними браузерами.
Я бы сделал это, чтобы избежать использования строк, когда они вам не нужны:
var n = 12345;
var arr = [];
while(n>0){arr.unshift(n%10);n=n/10|0;}
Array.from(String(12345), Number);
const numToSeparate = 12345;
const arrayOfDigits = Array.from(String(numToSeparate), Number);
console.log(arrayOfDigits); //[1,2,3,4,5]
Я сначала преобразовал число в строку, а затем использовал Array.from() для преобразования строки в массив.
let dataArray = Array.from(value.toString());
Запускаемый фрагмент:
const n = 12345;
let toIntArray = (n) => ([...n + ""].map(Number));
console.log(toIntArray(n));
Сначала целое число преобразуется в строку & затем в массив. Используя функцию карты, отдельные строки конвертируются в числа с помощью функции parseInt. Наконец, этот массив возвращается как результат.
const digitize = n => [...'${n}'].map(i => parseInt(i));