2016-03-27 15 views

cevap

1

Dizideki sınama ile eşleşen ve bu dizinin uzunluğunu döndüren karakterlerin üzerinde filter yapabilirsiniz.

function bitCount(n) { 
    var strBitCount = (n >>> 0).toString(2); 
    var equalsOne = function (char) { return +char === 1; } 
    return [].filter.call(strBitCount, equalsOne).length; 
} 

DEMO

+1

Çok hoş efendim ve zarif. –

1

Sen [] ile dizeye sıradan for döngü ve dizin kullanabilirsiniz:

for (var i = 0; i < strBitCount.length; ++i) 
    if (Number(strBitCount[i]) === 1) 
    answer++; 

Not o da olabilir sadece sayıyı answer'a ekleyin:

for (var i = 0; i < strBitCount.length; ++i) 
    answer += Number(strBitCount[i]); // or +strBitCount[i] 
3

JavaSc ript, diğer diller gibi foreach bloğuna sahip değildir.

Eğer Array.prototype.forEach kullanıyor yapabilecekleriniz:

Array.from("hello").forEach(function(character) { 
 
    console.log(character); 
 
});
Eh, ve ES2015 ve yukarıdaki

kullanabileceğiniz for..of

for (let character of "hello") { 
 
    console.log(character); 
 
}

+0

nooooo * downvote –

+0

yanlışlıkla downvote neden vurduğunu bilen bir *! Bence .... bir cevap verin ... cevabınız için teşekkürler. –

+1

@JeffOrris Sorun yok. Daha yararlı başka bir cevap bulduğunuzu kontrol ettim BTW Hala bunu biliyorsunuz ki 'foreach' bunu bilmiyor JavaScript içinde sözdizimsel olarak var –

İlgili konular