Как разбить число не используя массив .Типо 123456 на 1 , 2, 3, 4, 5, 6 (и что бы они оставались цифрами
метод split на выходе получаешь массив строк. Строка преобразуется в число оператором +
number = +text;
Не обратил внимание “не используя массив”. Тогда дели в цикле на Math.pow(10, i), где i - итерация цикла. 10, 100, 1000…
a зачем в степень возводить?
Можно и *=10 на каждой итерации цикла. Разница не большая. Для того чтобы на каждой итерации накидывался 0.
Нашел продвинутая отладка JavaScript. Ну это уже серьезные вещи.
что?
Ну это отладка. На недецком уровне :)
я понял что оно тебе понравилось 😊😊
Но какое отношение оно имеет к split и к вопросу как из ряда 123…
сделать 1,2,3…
Та здесь split нельзя использовать. Это ведь массив. Можно конечно учиху удивить решением задачи в 1-2 строки через regexp, но она не этому учит учеников.
ох и Штирлец 😊, запутал всех наверно уже совсем
var str = '12345';
[].map.call(str, function(x) {
return x;
}).join(',');
Это массивы… … … . Сказано, что массивы мимо. Цель даже не обойти массивы стороной, а решить задачу средствами, которые изучаются раньше массивов. Понятно, что тут можно и AI поключить и machine learning
Допустим, у нас есть строка '1234'
. Запустим цикл со счетчиком равным длине строки '1234'.length
. И дальше на каждой итерации можно парсить символ по инексу через parseInt
. На выходе получим число.
форма вывода уже подразумевает строку,
как можно вывести цифры через запятую?
как не переводи в числовое значение “,” + 4 даст String
и тут у меня вопрос
как без массива или обьекта через запятую вывести числа…
ясно что когда из строки мы выдергиваем число.
вот в тот момент и надо преобразовавать к Number …
num = 234; // 234
str= “2,3,4”; // 2,3,4
nums = 2,3,4 // 4
str[0]+str[4] // “2” + “4” = “24”;
что бы в числа перевести - вариантов много
- parseInt(str[0], 10)+parseInt(str[4], 10)
- Math.round(str[0], 10)+Math.round(str[4], 10)
- +str[0]+(+str[4])
- Math.pow(str[0], 1)+Math.pow(str[4], 1)
Как в итоге выглядит решение, которое подходит под условия задачи?
Для натуральных и отрицательных чисел сработает такой алгоритм:
- Берем число (A), получаем число меньше его на на десятичный разряд (A1)
- Находим разницу - эта разница и есть последняя цифра числа. Запоминаем в массив.
- Если A1 < 0, значит больше нет разрядов из которых можно достать цифру. Текущий массив и будет набором цифр. Иначе шаг 4:
- Повторяем шаг для (A1)
function getNumbers(num) {
let res = []
let base = 10
let currNum = Math.abs(num)
do {
let baseShiftedNum = Math.floor(currNum / base)
let diff = currNum - baseShiftedNum * base
res.unshift(diff)
currNum = baseShiftedNum
} while (currNum > 0)
return res
}