Основы числа JS [разбить число на цифры без использования массива]

Как разбить число не используя массив .Типо 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)

Как в итоге выглядит решение, которое подходит под условия задачи?

Для натуральных и отрицательных чисел сработает такой алгоритм:

  1. Берем число (A), получаем число меньше его на на десятичный разряд (A1)
  2. Находим разницу - эта разница и есть последняя цифра числа. Запоминаем в массив.
  3. Если A1 < 0, значит больше нет разрядов из которых можно достать цифру. Текущий массив и будет набором цифр. Иначе шаг 4:
  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
}