簡體   English   中英

計算使用indexOf在javascript中出現一個字母的次數

[英]count a how many times a letter appears in javascript using indexOf

我試圖計算使用indexOf()在字符串中出現字母的次數。 你能告訴我我的代碼在哪里出錯嗎? 謝謝!

var string = 'Lets find l as many times as we can. Love is natural, love you lots';

var myFunc = function (letter) {
    newString = 0;
    for (var i = 0; i < letter.length; i += 1) {
        if (string.indexOf('l')) {
            newString += 1;
        }
    }
    return newString;
}

而不是這個

if (string.indexOf('l')) {
    newString += 1;
}

您可以使用charAt甚至直接索引來檢查字符串的每個字母。

像這樣

if (letter[i] == 'l') {
    newString += 1;
}

或這個

if (letter.charAt(i) == 'l') {
    newString += 1;
}

這是一個FIDDLE


請注意,如果您要使用indexOf ,則需要直接在相關字符串上調用它,就像這樣

letter.indexOf('l')

另一個答案非常好,但如果你真的想要一個使用indexOf的解決方案(正如你的問題的標題所示),你需要提供第二個參數,告訴它從哪里開始尋找下一個事件:

var myFunc = function (str) {
    var i = 0, c = 0;
    do {
        i = str.indexOf('l', i);
    } while (++i && ++c);
    return c;
}

示范

但是,如果要求使用indexOf ,則可以將其簡化為:

var myFunc = function (str) {
    return str.split('l').length - 1;
}

如果你堅持使用indexOf那么這是一個遞歸方法:

var myFunc = function (str, letter) {
    var count = 0,
        p = str.indexOf(letter);

    if (p > -1) {
        count += (1 + myFunc(str.slice(p + 1, str.length - 1), letter));
    }

    return count;
};

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM