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]]
var str ='current=1&pageSzie=17&search=abc';functionparseQs(str){return str.split('&').reduce(function(p, v){
p[v.split('=')[0]]= v.split('=')[1];return p;},{})}var o =parseQs(str);
console.log(o);// { current: '1', pageSzie: '17', search: 'abc' }
封装函数将对象转为查询字符串
var obj ={current:'1',pageSzie:'17',search:'abc'};functionqueryStringify(o){var str ='';for(var key in o){
str +=`${key}=${o[key]}&`}return str.slice(0,-1);}var s =queryStringify(obj);
console.log(s);// 'current=1&pageSzie=17&search=abc'