2017-04-17 6 views
1

문자열의 특정 문자 수를 계산하려고하는데 올바른 출력 대신 "0"이 표시됩니다. 솔루션을 쉽게 얻을 수있는 방법이 있다는 것을 알고 있지만이 방법과이를 잘못 수행하는 방법을 알고 싶습니다.문자열의 특정 문자 수를 계산합니다.

countCharacter=(str,char)=>str.split("").reduce((count,letter)=>letter===char?count+1:count,0); 
+2

루프의 외부 반환을 넣어 : 결과 Arraylength 찾을 문자의 수 – Engineer

답변

4

개봉, 그래서 그냥 반복 한 번 forloop : 짧은

function countCharacter(str, char) { 
    var count = 0; 
    for(var i = 0; i < str.length; i++){ 
    if(str.charAt(i) === char){ 
     count++; 
    } 
    } 
return count; 
} 
countCharacter("My cat is driving my crazy", "a"); 

그런데, 루프

3

반환 카운트가 밖으로 장소에 있어야합니다 : for 루프에 복귀

function countCharacter(str, char) { 
    var count = 0; 
    for(var i = 0; i < str.length; i++){ 
    if(str.charAt(i) === char){ 
     count++; 
    } 
    return count; 
    } 
} 
countCharacter("My cat is driving my crazy", "a"); 
1

우연히 return 문을안에 넣었습니다. 0 루프이므로 루프를 처음 실행 한 후 반환됩니다. 아래에 고정 :

function countCharacter(str, char) { 
 
    var count = 0; 
 
    for(var i = 0; i < str.length; i++){ 
 
    if(str.charAt(i) === char){ 
 
     count++; 
 
    } 
 
    } 
 
    return count; 
 
} 
 
countCharacter("My cat is driving my crazy", "a");

2

당신은 splitfilter을 시도 할 수 있습니다.

const aFound = "My cat is driving my crazy" 
 
    .split("")      // split per character 
 
    .filter(chr => chr === "a"); // filter on character 'a' 
 

 
const numberOfz = findCharacterInString("I'm driving my cat crazy", "z"); 
 

 
document.querySelector("pre").textContent = ` 
 
    There is/are ${aFound.length} a('s) in "My cat is driving my crazy" 
 
    There is/are ${numberOfz} z('s) in "I'm driving my cat crazy"`; 
 
    
 
// As method (case insensitive) 
 
function findCharacterInString(string2Search, character) { 
 
    return string2Search 
 
    .split("") 
 
    .filter(chr => chr.toLowerCase() === character.toLowerCase()) 
 
    .length; 
 
}
<pre></pre>

관련 문제