var str ='qwert';// 索引
console.log(str[0]);// 'q'
console.log(str[3]);// 'r'
console.log(str[30]);// undefined
str[0]='a';// 修改无效
console.log(str);// 'qwert'// 长度
console.log(str.length);// 5
str.length =1;// 修改无效
console.log(str);// 'qwert'// 遍历字符串for(var i =0; i < str.length; i++){
console.log(str[i]);}
统计字符串中每个字符出现的次数
思路:利用对象的属性名是唯一的(不重复),来统计次数
假设对象:{ q: 3, ... } ==> 表示字符q出现了3次
可以使用字符串的字符作为对象的属性名使用,属性值为该字符在字符串中出现的次数
实现:
创建一个空对象
遍历字符串,拿到每一个字符
判断与字符一样的属性名在对象中是否存在(利用in语法)
如果不存在,说明该字符是第一次在字符串中出现
将该字符作为属性名添加至对象并赋值为1
如果存在,说明该字符不是第一次在字符串中出现
将该字符属性名对应的属性值+1
var str ='qwertyuiasdfuytreertyasdqweraqweas';// 写法1var obj ={};for(var i =0; i < str.length; i++){// 判断str[i]在obj中是否存在if(str[i]in obj){// 不是第一次出现
obj[str[i]]++;}else{// 第一次出现
obj[str[i]]=1;}}for(var s in obj){
document.write(`字符${s}出现了${obj[s]}次<br>`);}// 写法2var rObj = Array.from(str).reduce(function(p, v){
v in p ? p[v]++: p[v]=1;return p;},{});for(var s in rObj){
document.write(`字符${s}出现了${rObj[s]}次<br>`);}
统计出现次数最多的字符
// 取出对象中的所有键值作为数组数据,组成一个数组// 将数组降序排序,第一个数据即为最大值(每个字符出现次数的最大值)var n = Object.values(rObj).sort((a, b)=> b - a)[0];// 取出对象中的所有键值对作为数组数据,组成一个二维数组// 将出现次数(v[1])等于最大值(n)的数组数据过滤出来,组成一个的二维新数组var r = Object.entries(rObj).filter(v=> v[1]== n);// 最终得到出现次数最多的字符是'e',出现了5次
console.log(r);// [['e', 5]]