@yagyar001

Как посчитать количество каждой повторяющейся цифры в диапазоне от 0 до 109?

Всем привет. Учу js. Хотел попрактиковаться. Надо посчитать, сколько раз повторяется каждая цифра (от 0 до 9) в диапазоне чисел от 0 до 109. Мой код работает не так, как хотелось бы. Что я сделал не так? Просьба не ругаться и не "кидаться камнями", я только учусь))
let zero = 0;
let one = 0;
let two = 0;
let tree = 0;
let four = 0;
let five = 0;
let six = 0;
let seven = 0;
let eight = 0;
let nine = 0;
for (var i = 0; i < 109; i++) {
	if (String(i[i.length - 1] == 0)) {
		zero++;
	}
	if (String(i[i.length - 1] == 1)) {
		one++;
	}
	if (String(i[i.length - 1] == 2)) {
		two++;
	}
	if (String(i[i.length - 1] == 3)) {
		tree++;
	}
	if (String(i[i.length - 1] == 4)) {
		four++;
	}
	if (String(i[i.length - 1] == 5)) {
		five++;
	}
	if (String(i[i.length - 1] == 6)) {
		six++;
	}
	if (String(i[i.length - 1] == 7)) {
		seven++;
	}
	if (String(i[i.length - 1] == 8)) {
		eight++;
	}
	if (String(i[i.length - 1] == 9)) {
		nine++;
	}
};

console.log(zero);
console.log(one);
console.log(two);
console.log(tree);
console.log(four);
console.log(five);
console.log(six);
console.log(seven);
console.log(eight);
console.log(nine);
  • Вопрос задан
  • 566 просмотров
Решения вопроса 3
hzzzzl
@hzzzzl
можно короче, но в общем так

const count = {}  // результат

for (let i = 0; i < 109; i++) {
  const s = String(i)   // число 0-109
  for (let pos = 0; pos < s.length; pos++) {
    const num = s[pos]  // цифра
    if (count[num] !== undefined) {
      count[num]++
    } else {
      count[num] = 1
    }
  }
}


---

for (var i = 0; i < 109; i++) {
  if (String(i[i.length - 1] == 0)) {
    zero++;
  }
  ...


здесь и дальше ты проверяешь только последнюю цифру числа (i.length - 1), а не каждую цифру
Ответ написан
@Rerurk
Как вариант
let n=0;
let arr=[{0:n},{1:n},{2:n},{3:n},{4:n},{5:n},{6:n},{7:n},{8:n},{9:n}];
let x=0;

while (x<109) {
    String(x).split('').forEach(number => {
        arr[number][number]++;

    });
    x++;

}
console.log(arr);
Ответ написан
Комментировать
@Karpion
Вместо переменных zero, one, ..., nine - надо сделать массив. Тогда String(i[i.length - 1] будет индексом элемента массива, который надо инкрементировать.

Если так нельзя - то есть оператор switch/case.

Ну и, как тут уже сказали, надо проверять все String(i[*]), а не только последний.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы