一、charAt()对象 返回字符串中的字符
首先我们要了解一个对象charAt()
charAt() 方法从一个字符串中返回指定的字符。
下面是案例
// 根据位置返回字符
// 1. charAt(index) 根据位置返回字符
var str = 'andy';
console.log(str.charAt(3));//返回y
// 遍历所有的字符
for (var i = 0; i < str.length; i++) {
console.log(str.charAt(i));
}
运行截图:
可以看到第一次返回y是str.charAt(3) 指定了andy字符串中索引为3的字符
后面遍历整个andy字符串 依次返回 a n d y四个字符
二、有一个对象 来判断是否有该属性
引入一个小案例
// 有一个对象 来判断是否有该属性 对象['属性名']
var o = {
age: 18
}
if (o['sex']) {
console.log('里面有该属性');
} else {
console.log('没有该属性');
}
此为判断一个对象里是否有某个属性
三、判断某个字符串中出现次数最多的字符,并统计其次数
判断一个字符串 ‘abcoefoxyozzopp’ 中出现次数最多的字符,并统计其次数。
核心算法:先利用 charAt()遍历这个字符串,把字符串里的每个字符都存放在一个变量j里面;
然后把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1;这样就能把每一个字符出现的次数都找出来
最后再遍历对象,得到最大值和该字符。
具体代码实现:
<script>
var str = "abcoefoxyozzopp";
var obj={}//创建一个没有属性的对象
for(i=0;i<str.length;i++)
{
var j=str.charAt(i);
//j得到的是 第一次是j=a,第二次循环j=b,遍历字符串的每一个字符
if(obj[j]) //这里要注意调用对象属性
//object['属性名']这是一种调用方式 object.属性名 这是第二种调用方式
//因为j=str.charat(i); j返回的值是带引号的值 比如'a' 'b' 'c' 故调用属性直接用obj[j]
{
obj[j]++;//如果有obj.j属性名的话 就+1次数 即字符出现的次数
}else
obj[j]=1;//如果没有obj.j这个属性名的话,就赋值1给obj.j这个属性
}
console.log(obj);
// 2. 遍历对象
var max = 0;
var ch = '';
for (var key in obj) {
// key 得到是 属性名
// obj[key] 得到的是属性值
if (obj[key] > max) {
max = obj[key];
ch = key;
}
}
console.log('最多的字符是' + ch+'出现的次数为'+max+'次');
</script>
运行截图为: