Как я могу посчитать десятичную дробь из каждого числа строки?

#javascript #node.js #arrays

#javascript #node.js #массивы

Вопрос:

В моей задаче мне нужно посчитать каждое число в строке с десятичной дробью (d), после того как я n возведу числа в квадрат. Но я не знаю, как я могу это сделать. Это мой код:

 function nbDig(n, d) {
    let squareArr = [];
    let contor = 0;
    for (let i = 0; i <= n; i  ) {
        squareArr.push(i * i);
    }
    for (let i = 0; i < squareArr.length; i  ) {
        while (squareArr[i]) {
            let lastDigit = squareArr[i] % 10;
            squareArr[i] /= 10;
            Math.floor(squareArr[i]);

            if (lastDigit === d) {
                contor  ;
            }

        }
    }

    return contor;
}
 

Комментарии:

1. Пожалуйста, приведите пример ввода и желаемого вывода.

2. Пожалуйста, объясните немного яснее. Я не понимаю, что вы подразумеваете под «подсчитывать каждое число в строке с десятичной дробью (d)»

3. Да, моя ошибка. Мне нужно посчитать каждую десятичную дробь, которая идентична d . если у меня n = 10 и d = 1, мой squareArr будет 0 ,1,4,9,16,25,36,49,64,81,100 и контор будет 4 (из-за 1,16,81,100).

4. Math.floor(squareArr[i]); не будет работать

5. Разве вы не можете просто преобразовать число в строку и проверить, содержит ли оно символ "1" ?

Ответ №1:

 function nbDig(n, d) {
    let squareArr = [];
    let counter = 0;
    for (let i = 0; i <= n; i  ) {
        squareArr.push(i * i);
    }
    for (let i = 0; i < squareArr.length; i  ) {
        while (squareArr[i]) {
            let lastDigit = Math.floor(squareArr[i] % 10); // <- Updated
            squareArr[i] /= 10;
            squareArr[i] = Math.floor(squareArr[i]); // <- Updated ( Focus )
            if (lastDigit === d) {
                counter  ;
            }

        }
    }

    return counter;
}
console.log(nbDig(10, 6)) 

Ответ №2:

Ниже приведен пример простого использования массива, который строит квадраты его индекса, а затем мы используем filter amp; String.includes, чтобы получить те, в которых есть цифра, длина этого массива будет тогда count .

В качестве дополнительного бонуса, если вы закомментируете .length , он покажет вам найденные числа.

 const nbDig = (n, d) => 
  //create an array to loop over
  new Array(n 1).fill()
    //square the index
    .map((_,ix) => ix * ix)
    //filter out those with d
    .filter(f => f.toString().includes(d))
    //return length
    .length; 


console.log('nbDig(10, 1) = '   nbDig(10, 1));
console.log('nbDig(20, 0) = '   nbDig(20, 0));