Испытание "Сколько цифр?"

Получилось вот так, подсказку открыл, когда уже решил поставленную задачу.

let number = 999000;
let quantity = 1;

while (number > 1) {
if (number >= 100000 && number <= 999999) {quantity++}
else if (number >= 10000 && number <= 99999) {quantity++}
else if (number >= 1000 && number <= 9999) {quantity++}
else if (number >= 100 && number <= 999) {quantity++}
else if (number >= 10 && number <= 99) {quantity++}
number = Math.floor(number * 0.1);
}

console.log (quantity)

Оптимизировал:

let number = 88123;
let quantity = 0;

while (number > 0) {
quantity++
number = Math.floor(number * 0.1);
}

У меня тоже решение через ToString(). Получилось даже не в одну строку, а в полстроки.

let number = 123;
let quantity = 0;

quantity = number.toString().length;

let number = 123;
let quantity = 0;
let i = 1;

while (i <= number) {
quantity += 1;
i *= 10;
}

Я сделала через: quantity = String(number).split("").length;. Однако почитав тему, понял что split("") можно было и не использовать.

let number = 123;
let quantity = 1;

for (i = 10; (number - i) > 0; i *= 10) {
quantity++;
}

let number = 123;
let quantity = 0;

while(number>=1) {
quantity++;
number /= 10;
}

let number = 123;
let quantity = 0;

var str = String(number);
quantity = str.length;

Я что-то сразу так пошел, в голову решение через умножение пришло. По факту все работает одинаково, но даже в подсказке написано делить число на 10. Не могу понять что проще :thinking:

if(number % 1 === 0){
  for(let i = 1; i <= number; i *= 10 ){
    quantity ++;
  }
}else{
  console.log('число не целое');  
}

let number = 123;
let quantity = 0;
let sum = 0;

for(quantity = 1; number / 10 >= 1; quantity++){
     number = number / 10;
}

Вот такой вариант мне в голову пришел.

Таким путём пошёл:

Код
 let number = 123.4;
    let quantity = 0;
    // На случай не целого числа округляем его;
    let math = Math.round(number);
    // Приводим к типу string и считаем длину строки. 
    quantity = String(math).length
`let number = 123;
let quantity = 0;

for (let i = 0; i <= String(number).length; i++) {
  quantity = i
  }`

Посмотрел возможные решения, выше. До некоторых особо накрученных способов, у меня, из за отсутствия опыта, голова бы точно не додумалась. :grinning: :grinning:

Самый адекватный вариант.

let number = 123;
let quantity = String(number).length;
6 лайков

Через рекурсию как-то так получилось. Любые критика и рекомендации - с радостью приветствуются!

let number = 123;
let quantity = 0;

const numQuan = (num) => {
    quantity++;
    if (num / 10 >= 1) return numQuan(num/10);
    return quantity;
}

numQuan(number);

одна строчка, гениально

Действительно гениально, а то я городил:

let number = 123;
let quantity = 0;

// Преобразуем число в строку и затем разбиваем на массив символов
let numberStr = String(number);
let numberChars = numberStr.split('');

// Перебираем массив символов и увеличиваем счетчик quantity для каждого символа, который является цифрой
for (let i = 0; i < numberChars.length; i++) {
  if (!isNaN(numberChars[i])) { // Проверяем, является ли символ цифрой
    quantity++;
  }
}

console.log(quantity); // Выводим результат в консоль

let number = 123;
let quantity = 0;

quantity = number.toString().length