0
我正在嘗試編寫一個函數,它將一個(無符號)整數作爲輸入,並返回在該數字的二進制表示中等於1的位數。從無符號整數計數位
例如:1234的二進制表示是10011010010,所以在這種情況下函數應返回5。
這裏是我的回答:
var newArr;
var count = 0;
function countBits(num){
newArr = num.toString(2).split('').map(function(el){
if(el == '1')
count++
});;
return count;
}
在我的計劃時,我打電話countBits(7),它返回// 3,但是當我提出我的迴應,它說它返回// 4。根據問題,有人能夠看到我在回覆中丟失的內容嗎?
看看會發生什麼,當你調用你的函數兩次在相同的數字上。 – Blender
他們的測試工具可能會多次調用countBits。您從不將「count」重置爲「0」,因此它總計了它在所有呼叫中計算的總數。 'var count = 0;'應該在你的函數內而不是在它之前,而且你甚至不需要'newArr'變量。你可以使用'forEach'或'reduce'來代替地圖。如果你沒有在它接受的回調函數中返回一個值,那麼使用'map'沒有意義。 'forEach'更有意義。 – Paulpro