Для сегодняшнего алгоритма мы собираемся написать функцию с именем findDigits, которая будет принимать на входе целое число n.

При нахождении числа, которое является делителем другого числа в JavaScript, вы используете оператор по модулю. Оператор по модулю возвращает остаток от деления. Если что-то делится поровну, то остаток будет равен 0. Вам дано целое число n, и цель функции состоит в том, чтобы взять каждую цифру в этом полном целом числе и определить, является ли эта цифра делителем n. Вернуть количество цифр, являющихся делителями n. Приведем пример.

let n = 426;

Наша переменная n - 426, а цифры, составляющие число, - 4, 2 и 6.

Давайте разделим 426 на каждую из этих цифр и посмотрим, какая цифра является делителем 426.

426 / 4 = 106.5 // not a whole number, therefore not a divisor
426 / 2 = 213
426 / 6 = 71

Мы видим, что две цифры, 2 и 6, являются делителями 426, поэтому функция выведет 2.

Давайте превратим это в код. Создаем наши переменные:

let digitArray = (n + "").split('');
let divisors = [];

Наша переменная digitArray переносит наш ввод, разбивает его на отдельные цифры и помещает их в массив. Сначала мы конвертируем число в строку, объединяя его с пустой строкой. Затем мы используем метод split() вместе с использованием '' в качестве разделителя, чтобы мы могли разделить нашу строку на отдельные символы.

Наша переменная divisors будет содержать все числа, которые являются делителями n в массиве. В настоящее время он пуст.

Теперь мы перебираем наш массив digitArray:

for(let i = 0; i < digitArray.length; i++){
    let num = digitArray[i]*1;
    
    if(n % num == 0){
      divisors.push(num)
    }
  }

Символы в digitArray являются строками, поэтому мы быстро конвертируем их в целые числа, умножая их на 1. Мы присваиваем это значение переменной num для использования в нашем условном выражении if.

Мы проверяем, является ли отдельная цифра делителем n. Мы используем оператор по модулю. Если остаток равен 0, то это делитель. Мы помещаем эту цифру в наш массив divisors.

Наконец, мы возвращаем количество цифр в n, которые являются делителями n, возвращая длину массива divisors.

return divisors.length;

Вот полный код:

function findDigits(n) {
  let digitArray = (n + "").split('');
  let divisors = [];
  
  for(let i = 0; i < digitArray.length; i++){
    let num = digitArray[i]*1;
    
    if(n % num == 0){
      divisors.push(num)
    }
  }
  
  return divisors.length;
}

Если вы нашли этот алгоритм полезным или полезным, ознакомьтесь с другими моими статьями о решениях для алгоритмов JavaScript: