#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));