有关字符串的题【详细、易懂】

1. 统计一个字符串中某个字符出现的次数?

    1.1直接迭代

var str = "asdfadeaeraerta"

var sub="a"  //a字符出现了多少次

//先将str字符串转数组
var arr=str.split('')

console.log(arr);//["a", "s", "d", "f", "a", "d", "e", "a", "e", "r", "a", "e", "r", "t", "a"]

var num=0;   //设置初始值为0

for(var i=0;i<arr.length;i++){
    if(arr[i]==sub){
      num++
    }
}

console.log(num);

   1.2封装方法 indexOf判断   这种方法比上面的方法性能更高


var str = "asdfadeaeraerta" 

var sub="a"

function Finda(str,a){
  let n=0;  //初始值为0
  let index=str.indexOf(a)  //index为下标 在str中查找s
  //indexOf方法 查找不到返回1,查找到则返回该元素的下标
  while(index!=-1){ //如果存在,次数累加
      index=str.indexOf(a,index+1)
      n++
  }
  return n
}

let sum= Finda(str, sub)//调用函数 传参

console.log(sum);

     1.3最简洁的方法 

//3.split
var str = "asdfadeaeraerta"

var arr=str.split("a")

console.log(arr);  //["", "sdf", "de", "er", "ert", ""]

console.log(arr.length-1);  //出现了5次

    通过split方法转成数组,直接切割要查找的某个字符,从上面打印的arr来看从字符串a的地方断开“ ,”分割

 2.统计一个字符串中,出现次数最多的字符,出现第三次

  let str ="sdfiraagopijasdfdsaaasfggsdc"
  let arr=str.split('') //转换成数组
  console.log(arr);    //["s", "d", "f", "i", "r", "a", "a", "g", "o", "p", "i", "j", "a", "s", "d", "f", "d", "s", "a", "a", "a", "s", "f", "g", "g", "s", "d", "c"]
  let obj={}           //声明一个空对象 第一轮遍历完成 {s:1},第二轮 {s:1,d:1}
  arr.forEach(item=>{
      if(obj[item]){//undefined
         obj[item]++
      }else{
          obj[item]=1 
      }
     
  })
console.log(obj);    //{a: 6, c: 1,d: 4, f: 3,g: 3,i: 2,j: 1,o: 1,p: 1,r: 1,s: 5}
    let num=0;  //默认出现的次数为0
    let sum =null;
    for(var key in obj){
        console.log(key);   //key是obj中的每个属性名
        console.log(obj[key],"123");  //obj[key]对应的属性值
        if(obj[key]>num){  //判断obj[key]对象中属性名出现的次数与num初始值进行比较
            num=obj[key]   //出现的次数
            sum=key        //出现次数最多的字符
        }
    }
    console.log(`出现次数最多的是${sum},出现了${num}`);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值