为什么此代码仅在某些JS执行程序中有效?

时间:2019-03-05 18:19:30

标签: javascript string numbers

此代码采用整数,并返回存在的1s。

function countOnes(i) {
let str  = i.toString();
let ones = 0;
for(let x = 0; x < i.length; x++) {
  if(str.charAt(x) === '1') ones++;
 }
return ones;
}

console.log(countOnes(111000));

但是它似乎仅在某些JavaScript执行程序中有效。如果我将此代码输入p5.jsMozilla MDN,我将收到所需的3输出。

但是,如果我在浏览器和其他一些网站中使用控制台进行模拟,则0将返回每个给定的值。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

  1. 您无法在 i.length i 上循环,它仍然是“数字”类型, 您应该改为使用“ str.length”。
  2. 您最好使用更有意义的名称... i 应该为 num str 应该是 numStr 一个应该是计数器

尝试一下:

function countOnes(num) {
    var counter = 0;
    var numsArray = Array.from((num + ''))
    numsArray.forEach(num => {
        return (num == 1)? counter++ : ''
    })
    return counter
}   
console.log(countOnes(1110010)); // 4