我正在进行代码大战练习,并且它不接受我的解决方案,并引发类型错误:无法读取null的“长度”属性。我在一个单独的Chrome窗口中检查了代码,效果很好。当用任何整数调用函数时,我从二进制数中得到所有的1。我究竟做错了什么?
var countBits = function(n) {
var result = n.toString(2).match(/1/g).length;
return result;
};
最佳答案
尽管将数字转换为字符串并使用正则表达式进行计数没有什么问题,但是您也可以使用简单的数学运算来实现—只需将其连续除以2并查看数字mod 2,直到将其减少为零为止。
var countBits = function(n) {
let s = 0;
while (n > 0){
s += n % 2
n = Math.floor(n/2)
}
return s
};
console.log(countBits(0))
console.log(countBits(2))
console.log(countBits(3))
console.log(countBits(1234))