如何从每个字符串中计算一个小数?

时间:2021-03-02 20:50:31

标签: javascript node.js arrays

在我的问题中,在对 n 数字进行平方之后,我需要用小数 (d) 计算字符串中的每个数字。但是,我不知道如何才能做到这一点。这是我的代码:

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;
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

下面是一个例子,只使用一个数组来构建它的索引的平方,然后我们使用 filter & String.includes 来获取那些包含数字的数组,然后这个数组的长度就是计数。

另外一个好处是,如果您注释掉 .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));

相关问题