JavaScript計(jì)算字符串中特定字符出現(xiàn)次數(shù)的實(shí)例詳解
問(wèn)題描述
假設(shè)我們有一個(gè)包含文本內(nèi)容的字符串,并且我們想要知道特定字符在這個(gè)字符串中出現(xiàn)了多少次。為了解決這個(gè)問(wèn)題,我們可以編寫一個(gè)JavaScript函數(shù)來(lái)對(duì)字符串進(jìn)行處理并計(jì)算特定字符出現(xiàn)的次數(shù)。
解決方案
下面是兩個(gè)方案,都用于計(jì)算字符串中特定字符出現(xiàn)的次數(shù)。
大家討論一下哪種方案更好一些,或者評(píng)論區(qū)留下您認(rèn)為更優(yōu)秀的方案~
方案一
/**
* 計(jì)算字符串中特定字符出現(xiàn)的次數(shù)。
* @param {string} str 傳入的字符串
* @param {string} target 字符串中的某個(gè)字符
* @param {boolean} caseSensitive 是否區(qū)分大小寫,默認(rèn)為不區(qū)分
* @returns {number} 字符出現(xiàn)的次數(shù)
*/
const countOccurrence = (str, target, caseSensitive = false) => {
// 根據(jù)傳入的 caseSensitive 參數(shù)選擇是否進(jìn)行大小寫轉(zhuǎn)換
const modifiedStr = caseSensitive ? str : str.toLowerCase();
const modifiedTarget = caseSensitive ? target : target.toLowerCase();
// 創(chuàng)建一個(gè)空對(duì)象用于存儲(chǔ)字符出現(xiàn)的次數(shù)
const charCount = {};
// 遍歷字符串,統(tǒng)計(jì)字符出現(xiàn)的次數(shù)
for (const char of modifiedStr) {
charCount[char] = (charCount[char] || 0) + 1;
}
// 返回特定字符出現(xiàn)的次數(shù),如果不存在則返回 0
return charCount[modifiedTarget] || 0;
};
這個(gè)函數(shù)接受三個(gè)參數(shù):傳入的字符串 str、要計(jì)算出現(xiàn)次數(shù)的特定字符 target,以及一個(gè)布爾值 caseSensitive,用于指定是否區(qū)分大小寫,默認(rèn)為不區(qū)分。函數(shù)首先根據(jù) caseSensitive 參數(shù)選擇是否進(jìn)行大小寫轉(zhuǎn)換,然后遍歷字符串并統(tǒng)計(jì)字符出現(xiàn)的次數(shù),最后返回特定字符出現(xiàn)的次數(shù)。
方案二
/**
* 計(jì)算字符串中特定字符出現(xiàn)的次數(shù)。
* @param {string} str 傳入的字符串
* @param {string} target 字符串中的某個(gè)字符
* @param {boolean} caseSensitive 是否區(qū)分大小寫,默認(rèn)為不區(qū)分
* @returns {number} 字符出現(xiàn)的次數(shù)
*/
const countOccurrence = (str, target, caseSensitive = false) => {
// 根據(jù)傳入的 caseSensitive 參數(shù)選擇是否進(jìn)行大小寫轉(zhuǎn)換
const modifiedStr = caseSensitive ? str : str.toLowerCase();
const modifiedTarget = caseSensitive ? target : target.toLowerCase();
// 創(chuàng)建一個(gè)空對(duì)象用于存儲(chǔ)字符出現(xiàn)的次數(shù)
return [...modifiedStr].filter((l) => l === modifiedTarget).length;
};
這個(gè)函數(shù)接受三個(gè)參數(shù):傳入的字符串 str、要計(jì)算出現(xiàn)次數(shù)的特定字符 target,以及一個(gè)布爾值 caseSensitive,用于指定是否區(qū)分大小寫,默認(rèn)為不區(qū)分。函數(shù)首先根據(jù)傳入的參數(shù)決定是否進(jìn)行大小寫轉(zhuǎn)換,然后利用了filter API來(lái)過(guò)濾出與目標(biāo)字符匹配字符的數(shù)組,最后返回所匹配的數(shù)組長(zhǎng)度作為結(jié)果。
使用示例
以下是使用這個(gè)函數(shù)的示例:
const count = countOccurrence("LostElk", "l", false);
console.log(count);
在這個(gè)示例中,我們將一個(gè)字符串傳遞給 str 參數(shù),并指定要計(jì)算出現(xiàn)次數(shù)的特定字符為 'l'。然后,我們調(diào)用 countOccurrence 函數(shù),并將結(jié)果打印到控制臺(tái)。
結(jié)論
在JavaScript編程中,對(duì)字符串進(jìn)行字符計(jì)數(shù)是一個(gè)常見(jiàn)的任務(wù)。通過(guò)編寫簡(jiǎn)單而有效的函數(shù),我們可以更靈活地解決這個(gè)問(wèn)題。
以上就是JavaScript計(jì)算字符串中特定字符出現(xiàn)次數(shù)的實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript計(jì)算字符出現(xiàn)次數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS簡(jiǎn)單實(shí)現(xiàn)DIV相對(duì)于瀏覽器固定位置不變的方法
這篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)DIV相對(duì)于瀏覽器固定位置不變的方法,涉及javascript針對(duì)頁(yè)面位置的運(yùn)算與動(dòng)態(tài)變換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
javascript中eval和with用法實(shí)例總結(jié)
這篇文章主要介紹了javascript中eval和with用法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript中eval和with的功能、用法與相關(guān)注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
基于Arcgis for javascript實(shí)現(xiàn)百度地圖ABCD marker的效果
本篇文章由腳本之家小編給大家分享的基于Arcgis for javascript實(shí)現(xiàn)百度地圖ABCD marker的效果,需要的朋友一起學(xué)習(xí)吧2015-09-09
javascript 動(dòng)態(tài)樣式添加的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇javascript 動(dòng)態(tài)樣式添加的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
關(guān)于BootstrapTable 導(dǎo)出數(shù)據(jù)的問(wèn)題最終解決方案
這篇文章主要介紹了BootstrapTable 導(dǎo)出數(shù)據(jù)的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
javascript動(dòng)態(tài)控制服務(wù)器控件實(shí)例
在頁(yè)面中放入一個(gè)DropDownList控件,并添加一項(xiàng),用來(lái)分析其產(chǎn)生的HTML代碼,這樣在使用js進(jìn)行動(dòng)態(tài)控制時(shí),將會(huì)非常清晰2014-09-09
詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用
這篇文章主要介紹了詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07

