【学习笔记27】JavaScript字符串方法的练习
创始人
2024-04-12 21:37:53

JavaScript字符串方法的练习

    • 一、统计字符串中每个字符出现的次数(以对象的形式记录)
      • 1、拿到字符串所有的值
      • 2、累加统计次数
      • 3、小优化
    • 二、反转字符串
    • 三、替换违禁词
      • 1、需求:将字符串中的'6666', 替换为 "****"
      • 2、需求: 批量替换违禁词 ['6666', '777']
    • 四、查询字符串
      • 1、模拟一个查询字符串
      • 2、分析
      • 4、逻辑
        • 方法一:for循坏
        • 方法二:forEach循坏
    • 五、将对象转为查询字符串格式


笔记首发

一、统计字符串中每个字符出现的次数(以对象的形式记录)

1、拿到字符串所有的值

        var str = 'aaabbccdddeeee';
​// 定义变量 存储数据var obj = {};
​// 循坏遍历 拿到字符串所有的值for (var i = 0; i < str.length; i++) {
​// 当obj中为undefined时 将数值写入obj中if (obj[str[i]] == undefined) {
​obj[str[i]] = 1;}console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);}console.log(obj);

在这里插入图片描述

2、累加统计次数

        var str = 'aaabbccdddeeee';
​// 定义变量 存储数据var obj = {};
​// 循坏遍历 拿到字符串所有的值for (var i = 0; i < str.length; i++) {
​// 当obj中为undefined时 将数值写入obj中if (obj[str[i]] == undefined) {
​obj[str[i]] = 1;}else{// 累加统计字数obj[str[i]]++;}// console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);}console.log(obj);

在这里插入图片描述

3、小优化

                /*  解释说明if(obj[a] === undefined){ true  // undefined的布尔值是false    // !undefined=true   !obj[str[i]]=trueobj[str[i]] = 1;}else{  falseobj[str[i]]++;}*/
        var str = 'aaabbccdddeeee';
​// 定义变量 存储数据var obj = {};
​// 循坏遍历 拿到字符串所有的值for (var i = 0; i < str.length; i++) {
​// 当obj中为undefined时 将数值写入obj中// if (obj[str[i]] == undefined) {if (!obj[str[i]]) {obj[str[i]] = 1;} else {// 累加统计字数obj[str[i]]++;}// console.log(`当前 i == ${i}; str[i] == ${str[i]}`, obj);}console.log(obj);

二、反转字符串

  1. 转化为数组 字符串.split(分隔符)
  2. 反转数组
  3. 将数组的每一项合并为一个字符串
        var str = 'aabbccdd';console.log('原字符串:', str);
​// split 分割var str1 = str.split('');console.log(str1);
​// reverse 反转var str2 = str1.reverse();console.log(str2);
​var str3 = str2.join('');console.log('反转字符串:',str3);

在这里插入图片描述

优化代码

    var str = 'aabbccdd';var str1 = str.split('').reverse().join('');console.log(str1);

三、替换违禁词

1、需求:将字符串中的’6666’, 替换为 “****”

  • 查找字符串中是否拥用 ‘6666’ ,( includes)
  • 将其替换掉 “” (replace)
        var str = '66661234666612347771234777';console.log('原字符串', str);
​// 判断是否满足条件while (str.includes('6666')) {
​str = str.replace('6666', '****');}console.log('替换字符串', str);

在这里插入图片描述

2、需求: 批量替换违禁词 [‘6666’, ‘777’]

        var str = '66661234666612347771234777';console.log('原字符串', str);// 定义变量 存储要替换的违禁词var arr = ['6666', '777'];// for循坏遍历for (var i = 0; i < arr.length; i++) {while (str.includes(arr[i])) {
​str = str.replace(arr[i], '****')}}console.log('替换字符串', str);
​// forEach循坏遍历arr.forEach(function (item) {while (str.includes(item)) {str = str.replace(item, '****')}})console.log('替换字符串', str);

在这里插入图片描述

四、查询字符串

  1. 查询字符串 (约定)
    • 数字字符串 ‘1234567’
    • 标签字符串 ‘
  2. 查询字符串:‘key=value’
  3. 多个查询字符串:‘key=value;key1=value1;key2=value2’

1、模拟一个查询字符串

  • 需求:将查询字符串转换为对象格式

2、分析

  • 拿到字符串中所有的key
  • 拿到字符串中所有key对应的value

4、逻辑

  • 将字符串分隔为key=value (分隔完应该有3个)
  • 拿到每一个key添加到对象中, 并且给值赋值为对应的value

方法一:for循坏

        // 模拟一个查询字符串var str = 'username=QF;age=18;abc=123'console.log('原字符串:', str);
​// 定义变量 存储数var obj = {};
​var arr = str.split(';');console.log('分号分割字符串:', arr);
​// 循坏遍历for (var i = 0; i < arr.length; i++) {// 等号分割字符串var newArr = arr[i].split('=');console.log('等号分割字符串:', newArr);
​var key = newArr[0]var value = newArr[1]// console.log(key, value)obj[key] = value}console.log(obj);

在这里插入图片描述

最终代码

        // 模拟一个查询字符串var str = 'username=QF; age=18;abc=123';console.log(str);// 定义变量 存储数据var obj = {};// 分号分割字符串var arr = str.split(';');// 循坏遍历 for (var i = 0; i < arr.length; i++) {// 等号分割字符串var newArr = arr[i].split('=');var key = newArr[0];var value = newArr[1];obj[key] = value;}console.log(obj);

在这里插入图片描述

方法二:forEach循坏

        // 模拟一个查询字符串var str = 'username=QF;age=18;abc=123'console.log('原字符串:', str);
​// 定义变量 存储数var obj = {};
​var arr = str.split(';');console.log(arr);
​arr.forEach(function (item) {//等号分割字符串var newArr = item.split('=')// var key = newArr[0]// var value = newArr[1]// obj[key] = valueobj[newArr[0]] = newArr[1]})
​console.log(obj)

在这里插入图片描述

五、将对象转为查询字符串格式

        var obj = {username: 'QF',age: 18,abc: 124};console.log('原对象:', obj);
​var newStr = '';for (var key in obj) {// 累加键值对newStr += 'key' + '=' + obj[key] + ';';console.log(newStr);}// 字符串.slice(开始下标, 结束下标)newStr = newStr.slice(0, newStr.length - 1);console.log('查询字符串:', newStr);

在这里插入图片描述

相关内容

热门资讯

《达·芬奇全集》在京首发 与文... 1月9日下午,2026北京图书订货会期间,《达·芬奇全集》新书见面会在中国国际展览中心(朝阳馆)湖南...
内蒙古冬季文旅活动丰富多彩 (来源:内蒙古日报)转自:内蒙古日报□本报记者  冯雪玉  103个旗县(市、区)中84个开展了冰雪...
中国石油大学(北京)宿舍条件怎... 中国石油大学(北京)宿舍条件怎么样—中国石油大学(北京)宿舍图片大学宿舍就是我们的第二个家,中国石油...
中国矿业大学(北京)宿舍条件怎... 中国矿业大学(北京)宿舍条件怎么样—中国矿业大学(北京)宿舍图片大学宿舍就是我们的第二个家,中国矿业...
山西中医学院宿舍条件怎么样,山... 山西中医学院宿舍条件怎么样—山西中医学院宿舍图片大学宿舍就是我们的第二个家,山西中医学院宿舍条件怎么...