Почему этот код работает только в определенных исполнителях JS? - PullRequest
0 голосов
/ 05 марта 2019

Этот код принимает целое число и возвращает количество присутствующих единиц.

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.js или Mozilla MDN , я получу желаемый вывод 3.

Но если я использую консоль в своем браузере и на некоторых других веб-сайтах, имитирующих это, 0 будет возвращено с каждым заданным значением.

Почему это так?

1 Ответ

0 голосов
/ 05 марта 2019
  1. Вы не можете зациклить на i.length , i это все еще тип 'Number', вместо этого вы должны зацикливаться на "str.length".
  2. вам лучше дать более значимые имена ... i должно быть num , str должно быть numStr , единиц должно быть counter .

попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...