2013-11-25 165 views
2

我對JavaScript很陌生,我試圖弄清楚如何計算單個字母出現在單詞中的次數。例如,'p'出現在'apple'計算單個字母出現在單詞中的次數

以下是我迄今爲止所寫的內容,但無法找出我錯在哪裏。

var letterInWord = function (letter, word) { 
    var letter = 0; 
    var word = 0; 
    for (var i = 0; i < letter.charAt; i+= 1) { 
    if (letter.charAt(i) === " " = true) { 
     letter++; 
     console.log('The letter `letter` occurs in `word` 1 time.'); 
    } 
    } 
    return letter; 
}; 

回答

3

你有一些問題:

  1. 你打算重用的參數名稱作爲局部變量名。使用不同的標識符來跟蹤你的函數中的每一個信息位。
  2. letter.charAt未定義,如果letter是一個數字,並且是一個函數,如果letter是一個字符串。無論哪種方式,i < letter.charAt是沒有意義的。
  3. 如果您正在尋找letterword爲什麼你想要看letter.charAt(i)?您可能需要word.charAt(i)
  4. " " = true根本沒有意義。

也許你的意思是這樣的?

var letterInWord = function (letter, word) { 
    var count = 0; 
    for (var i = 0; i < word.length; i++) { 
    if (word.charAt(i) === letter) { 
     count++; 
    } 
    } 
    return count; 
}; 
+0

謝謝,即時通訊困惑雅導致即時新:)的問題。我將您的代碼複製到Chrome控制檯,但一定不能正確運行,因爲我總是找回錯誤。我應該運行什麼函數來查看console.log輸出結果? – jstone

+0

@jstone你看到什麼錯誤?它在我的控制檯上運行良好。 –

+0

我輸入'var letterInWord = function(letter,word){...};'並按回車鍵;結果是'undefined'(因爲'var')。然後我輸入'letterInWord('p','apple')',然後回車,結果是2. –

1
'apple'.match(/p/g).length // outputs 2 
換句話說

var letterInWord = function (letter, word) { 
    return (word.match(new RegExp(letter, 'g')) || []).length; 
}; 

FIDDLE

+0

感謝的人物,雖然IM迷惑你只是做了你在我的代碼中把它放到哪裏去,或者是你放在控制檯上運行的東西? – jstone

+0

這樣做似乎更容易嗎? – adeneo

+0

@jstone - 此答案中顯示的單行功能完全取代了現有的九行功能。這是計算字母計數的另一種方法。 – nnnnnn

0

這裏有一個小的功能,也可用於像$*(並且因爲它是對字符串進行調用length,就沒有必要使用|| []

'apple'.replace(/[^p]/g,'').length // outputs 2 


             
  
function charcount(c, str) { 
 
    return str.replace(new RegExp('[^'+c+']','g'),'').length 
 
} 
 

 
console.log = function(x) { document.write(x + "<br />"); }; 
 
console.log("'*' in '4*5*6' = " + charcount('*', '4*5*6')) // outputs 2 
 
console.log("'p' in 'pineapples' = " + charcount('p', 'pineapples'))// outputs 3
相關問題