1.charAt(index) 方法从一个字符串中返回指定的字符。
语法:str.charAt(index)
参数:
index:从0-字符串长度-1之间的整数,没有设置默认为0,如果设置的index超出了字符串的范围,则返回一个空字符串
例子:
let str = 'abcdefghijklmn';
for(let i = 0; i <= str.length; i++){
console.log(`当前索引${i}的值是${str.charAt(i)}`)
// 最后一个会是空字符串,因为最后一个超出了str的范围
}
上面代码输出为:
当前索引0的值是a
当前索引1的值是b
当前索引2的值是c
当前索引3的值是d
当前索引4的值是e
当前索引5的值是f
当前索引6的值是g
当前索引7的值是h
当前索引8的值是i
当前索引9的值是j
当前索引10的值是k
当前索引11的值是l
当前索引12的值是m
当前索引13的值是n
当前索引14的值是
2.charCodeAt()
方法返回元素的ASCII码
语法:str.charAt(index)
参数:
index:从0-字符串长度-1之间的整数,没有设置默认为0,如果设置的index超出了字符串的范围,则返回NaN
目的:charCodeAt可以用来判断用户按下哪个键
ASCII码表
例子:
let str = 'abc123';
for(let i = 0; i <= str.length; i++){
console.log(`${str.charAt(i)}的ASCII码是${str.charCodeAt(i)}`)
// 因为最后一个超出了str的范围,所以会返回NaN
}
上面代码输出为:
a的ASCII码是97 b的ASCII码是98 c的ASCII码是99 1的ASCII码是49 2的ASCII码是50 3的ASCII码是51 的ASCII码是NaN
3.str[index] h5新增方法 有兼容性问题 ie8+支持 和charAt一样
let str = 'abcde';
for(let i = 0; i <= str.length; i++){
console.log(str[i])
}
案例:
统计出现次数最多的字符
// 步骤:
// 1.把所有相同的元素都统计一遍
// 2.比较所有相同元素的次数大小
let str = 'hellow,word';
console.log(str);
let obj = {}; // 把出现的次数记录在obj里
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) { // 判断obj里有没有相同的属性
obj[str[i]] += 1; // 有在原有属性值+1
} else {
obj[str[i]] = 1; // 没有定义一个原始值1
}
}
// 比较大小
let num; // 存放出现次数最多的字符
let max = 0; // 存放最多次数
for (let k in obj){
if(obj[k] > max){ // 比较次数
max = obj[k]; // 把当前次数赋值给max
num = k; // 把当前字符串赋值给num
}
}
console.log(`次数最多的是${num}:${max}次`);
// 次数最多的是l:2次
因为可能在一个字符串里的字符出现一样多的情况
解决方案
// 可能字符串里同样次数的字符比较多 比如 a==b==c
// 所以我们要用数组把这些最多的字符存储起来
let arr = [];
for (let k in obj) {
if (obj[k] == max) { // 判断出次数最多相同的属性
arr.push(k); // 追加到arr数组里
}
}
console.log(`次数最多的是${arr}:${max}次`);
// 次数最多的是l,o,w:2次