Номер JavaScript разбит на отдельные цифры - PullRequest
48 голосов
/ 16 октября 2011

Привет, я пытаюсь решить математическую задачу, где я беру число, например, 45 или 111, а затем делю число на отдельные цифры, например, 4 5 или 1 1 1. Затем я сохраню каждое число в переменную для запускаметод на.Кто-нибудь знает, как разбить число на отдельные цифры.

Например, у меня есть цикл, который запускается в массиве:

for (var i = 0; i < range.length; i++) {
var n = range[i];   
}

Для каждого числа я хотел бы разбить его цифры и сложить их вместе?

Ответы [ 23 ]

1 голос
/ 03 июля 2017

Я использовал этот простой способ сделать это.

Чтобы разделить цифры

var N = 69;
var arr = N.toString().split('').map(Number)
// outputs [6,9]
console.log( arr ); 

Чтобы сложить их вместе

console.log(arr.reduce( (a,b) => a+b )); // 15
1 голос
/ 06 сентября 2018

В ES6 вы можете использовать Array.from со строковым числом в качестве итераций и Number в качестве функции отображения.

const getDigits = n => Array.from(n.toString(), Number);

console.log(getDigits(12345));
1 голос
/ 20 мая 2018

И самый легкий .... num_string.split('').map(Number)

Попробуйте ниже:

console.log((''+123).split('').map(Number))
1 голос
/ 17 января 2018

Без преобразования в строку:

function toDigits(number) {
    var left;
    var results = [];

    while (true) {
        left = number % 10;
        results.unshift(left);
        number = (number - left) / 10;
        if (number === 0) {
            break;
        }
    }

    return results;
}
0 голосов
/ 05 июля 2019

Это мое короткое решение .. с суммой чисел

    function sum (num) {
    let sNumber = num
        .toString()
        .split('')
        .reduce((el1, el2) => {
            return Number(el1) + Number(el2)
        }, 0)
        return sNumber
     }

console.log (сумма (123))
console.log (сумма (456))

0 голосов
/ 10 мая 2019

Вы можете сделать это в одной строке, разделить каждую цифру, а затем сложить их вместе:

var may = 12987;
var sep = (""+may).split("").map(n=>+n).reduce((a,b)=>a+b);
0 голосов
/ 22 февраля 2016

Функциональный подход для получения цифр от number состоит в том, чтобы получить string от вашего number, разделить его на array (символов) и сопоставить каждый элемент обратно в число.

Например:

var number = 123456;

var array = number.toString()
.split('')
.map(function(item, index) {
   return parseInt(item);
});

console.log(array); // returns [1, 2, 3, 4, 5, 6]

Если вам также необходимо сложить все цифры, вы можете добавить метод reduce() к предыдущему коду:

var num = 123456;

var array = num.toString()
.split('')
.map(function(item, index) {
   return parseInt(item);
})
.reduce(function(previousValue, currentValue, index, array) {
  return previousValue + currentValue;
}, 0);

console.log(array); // returns 21

В качестве альтернативы, в ECMAScript 2015 (6-е издание) вы можете использовать функции стрелок :

var number = 123456;
var array = number.toString().split('').map((item, index) => parseInt(item));
console.log(array); // returns [1, 2, 3, 4, 5, 6]

Если вам нужно сложить все цифры, вы можете добавить метод reduce() к предыдущему коду:

var num = 123456;

var result = num.toString()
.split('')
.map((item, index) => parseInt(item))
.reduce((previousValue, currentValue) => previousValue + currentValue, 0);

console.log(result); // returns 21
0 голосов
/ 15 февраля 2019

('' + 123456789).split('').map( x => +x ).reduce( (a,b) => a+b ) === 45

true

или без карты

('' + 123456789).split('').reduce( (a,b) => (+a)+(+b) ) === 45

true

0 голосов
/ 15 февраля 2019

Чтобы просто разбить целое число на отдельные цифры в том же порядке, я использовал и предпочел Регулярное выражение, поскольку оно предотвращает возможность потери идентичности чисел даже после того, как они были преобразованы в строку.

Следующая строка кода преобразует целое число в строку, использует регулярное выражение для сопоставления с любой отдельной цифрой в строке и возвращает массив из них, после чего этот массив отображается для преобразования обратно в числа.

const digitize = n => String(n).match(/\d/g).map(Number);

0 голосов
/ 26 января 2019

Более элегантный способ с ES6:

const int = 123;
for (let d of int.toString()) {
    console.log(d);
}
// 1
// 2
// 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...