/**
*
* @param {*} str 传入的字符串
* @param {*} filed 字符串中的某个字符
* @param {*} needCaseSensitive 是否区分大小写 默认不区分
* @returns
*/
const countOccurrent = (str, filed, needCaseSensitive = false) => {
//1. 先将str, 以及 字符串 转换成小写
// 不区分大小写的情况
if (!needCaseSensitive) {
str = str.toLocaleLowerCase()
filed = filed.toLocaleLowerCase()
}
//2. 定义一个 控对象
let emptyObj = {}
//3. 遍历我们的字符串
for (let cxt of str) {
// 4. 核心思路 判断对象中是否存在这个 键值对
// 如果存在 就在原来的基础上 +1
// 如果不存在 就创建一个并且默认值设为 1
emptyObj[cxt] = emptyObj[cxt] ? ++emptyObj[cxt] : (emptyObj[cxt] = 1)
}
// 5. 将结果返回
return emptyObj[filed]
}
test_demo:
const str = 'hello'
const eLength = countOccurrent(str, 'l')
eLength => 2