• JavaScript基础部分经典案例


    再复杂的程序都是由一个个简单的部分组成。

    001案例 - 交换两个变量的值

    方法01 - 使用临时变量

        var n1 = 5;
        var n2 = 6;
        // 创建一个临时中介变量 tmp
        var tmp;
        // 将 n1 的值备份给 tmp
        tmp = n1;
        // 把 n2 赋值给 n1
        n1 = n2;
        // 把备份的 n1 赋值给 n2
        n2 = tmp;
        console.log(n1, n2);
    

    方法02 - 不使用第三个变量

        var n1 = 5;
        var n2 = 6;
        // 利用两个值的和充当第三个变量
        n1 = n1 + n2;   // 5 + 6 = 11
        n2 = n1 - n2;   // 11 - 6 = 5;
        n1 = n1 - n2;   // 11 - 5 = 6;
        console.log(n1, n2);
    

    002案例 - 求两个数的最大值

    方法01 - 使用条件判断

        var num1 = 2;
        var num2 = 5;
        // 使用条件判断
        if (num1 > num2) {
          console.log('最大值是num1:' + num1);
        } else {
          console.log('最大值是num2: ' + num2);
        }
    

    方法02 - 使用三元表达式

     var num1 = 13;
        var num2 = 6;
        // 表达式1 ? 表达式2 : 表达式3
        // console.log( num1 > num2 ? num1 : num2 );
        var max = num1 > num2 ? num1 : num2;
        console.log(max);
    

    003案例 - 判断一个数是偶数还是奇数

      var num = 5;
      if (num % 2 === 0) {
        console.log('num是偶数');
      } else {
        console.log('num是奇数');
      }
    

    004案例 - 考分转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A;

    方法01 - 使用条件判断

     var score = 59;
      if (score >= 90) {
        console.log('A');
      } else if (score >= 80) {
        console.log('B');
      } else if (score >= 70) {
        console.log('C');
      } else if (score >= 60) {
        console.log('D');
      } else {
        console.log('E');
      }
    

    方法02 - 使用 switch 语句

        var score = 66; 
        score = parseInt(score / 10);
        switch (score) {
          case 10:
          case 9:
            console.log('A');
            break;
          case 8:
            console.log('B');
            break;
          case 7:
            console.log('C');
            break;
          case 6:
            console.log('D');
            break;
          default: 
            console.log('E');
            break;
        }
    

    005案列 - 判断一个年龄是否成年, 当年龄超过18 返回成年;否则返回未成年.

        var age = 19;
        // console.log( age >= 18 ? '成年' : '未成年' );
        
        var msg = age >= 18 ? '成年' : '未成年';
        console.log(msg);
    

    006案例 - 输入一个数字,打印对应的星期

        //  == 比较的是值  === 比较值和类型
        //  switch语句中的判断使用的是===
        var day = 10;
        switch (day) {
          case 1:
            console.log('星期一');
            break;
          case 2:
            console.log('星期二');
            break;
          case 3:
            console.log('星期三');
            break;
          case 4:
            console.log('星期四');
            break;
          case 5:
            console.log('星期五');
            break;
          case 6:
            console.log('星期六');
            break;
          case 7:
            console.log('星期日');
            break;
          default:
            console.log('输入的值不在星期范围内');
            break;
        }
    

    007案例 - 打印1-100之间所有的数字

    方法01 - 使用 while 实现

          var i = 1;
          while (i <= 100) {
          console.log(i);
          // i = i + 1;
          // i += 1;
          i++;
        }
    

    方法02 - 使用 for 实现

        for (var i = 1; i <= 100; i++) {
          console.log(i);
        }
    

    008案例 - 计算1-100之间所有数的和

    方法01 - 使用 while 实现

        var i = 1;
        var sum = 0;
        while (i <= 100) {
          sum = sum + i;
          i++;
        }
        console.log(sum);
    

    方法02 - 使用 for 实现

        var sum = 0;
        for (var i = 1; i <= 100; i++) {
          // sum = sum + i;
          sum += i;
        }
        console.log(sum);
    

    009案例 - 打印100以内 7的倍数

        var i = 1;
        while (i <= 100) {
          // 判断当前的i是否是7的倍数
          if (i % 7 === 0) {
            console.log(i);
          }
          // i自身+1
          i++;
        }
    

    变通:

        var i = 1;
        while (i*7 <= 100) {
          console.log(i*7)
          // i自身+1
          i++;
        }
      // 这样减少了循环次数,还不需要条件判断
    

    010案例 - 打印100以内所有偶数

        var i = 1;
        while (i <= 100) {
          // 判断当前的i是否是偶数
          if (i % 2 === 0) {
            console.log(i);
          }
          // i自身+1
          i++;
        }
        
        // 这个案例同样可以使用上面的变通方法
    

    011案例 - 打印100以内所有偶数的和

    方法01 - 使用 while 实现

        var i = 1;
        var sum = 0;
        while (i <= 100) {
          // 判断当前的i是否是偶数,如果是偶数的话累加
          if (i % 2 === 0) {
            sum += i;
          }
          // i自身+1
          i++;
        }
        console.log(sum);
    

    方法02 - 使用 for 实现

        var sum = 0;
        for (var i = 1; i <= 100; i++) {
          // 找到偶数
          if (i % 2 === 0) {
            sum += i;
          }
        }
        console.log(sum);
    

    012案例 - 1-100之间所有数字的和

        var i = 1;
        var sum = 0;
        do {
          // 循环体
          // 累加
          sum += i;
          // i 自身+1
          i++;
        } while (i <= 100);
        console.log(sum);
    

    013案例 - 求100以内所有3的倍数的和

        var i = 1;
        var sum = 0;
        do {
          // 循环体
          // 判断是否是3的倍数,如果是3的倍数累加
          if (i % 3 === 0) {
            sum += i;
          }
          // i自身+1
          i++;
        } while (i <= 100);
        console.log(sum);
    

    014案例 - 使用do-while循环:输出询问“我爱你,嫁给我吧?”

        do {
          var msg = prompt('你到底爱不爱我?', '请输入yes/no');
        } while (msg !== 'yes');
        console.log('亲亲我的宝贝');
    

    015案例 - 求1-100之间所有数的平均值

        var sum = 0;
        var avg;
        for (var i = 1; i <= 100; i++) {
          sum += i;
        }
        avg = sum / 100;
        console.log(avg);
    

    016案例 - 同时求1-100之间所有偶数和奇数的和

        var oddSum = 0;  // 奇数的和
        var evenSum = 0; // 偶数的和
        for (var i = 1; i <= 100; i++) {
          // 判断i是奇数还是偶数
          if (i % 2 === 0) {
            // 偶数
            evenSum += i;
          } else {
            //奇数
            oddSum += i;
          }
        }
        console.log('奇数的和:' + oddSum);
        console.log('偶数的和:' + evenSum);
    

    017案例 - 在控制台打印正方形

        var str = '';
        // 外层的循环控制输出多少行
        for (var j = 0; j < 10; j++) {
          // 控制一行中输出 10 个*
          for (var i = 0; i < 10; i++) {
            // str = str + '*';
            str += '* ';
          }
          // str = str + '
    ';
          str += '
    ';
        }
        
        console.log(str);
    

    018案例 - 在控制台打印三角形

        // 外层循环 控制输出的行数
        var str = '';
        for (var i = 0; i < 10; i++) {
          // 内层循环  控制输出的每一行的*的个数
          for (var j = i; j < 10; j++) {
            str += '* ';
          }
          str += '
    ';
        }
        console.log(str);
    

    019案例 - 打印99乘法表

        // 外层循环  控制输出多少行
        var str = '';
        for (var i = 1; i <= 9; i++) {
          // 内层循环  控制每一行有多少个内容
          for (var j = i; j <= 9; j++) {
            str += i + '*' + j + '=' + i * j + '	';
          }
          str += '
    ';
        }
        console.log(str);
    

    020案例 - 求整数50~200的第一个能被7整除的数

        for (var i = 50; i <= 200; i++) {
          if (i % 7 === 0) {
            console.log(i);
            // 打印后终止循环
            break;
          }
        }
        console.log('over');
    

    021案例 - 求整数1~100的累加值,但要求跳过所有个位为3的数

        var sum = 0;
        for (var i = 1; i <= 100; i++) {
          if (i % 10 === 3) {
            // 如果找到个位为3的数字 ,继续执行下一次循环
            continue;
          } 
          sum += i;
        }
        console.log(sum);
    

    022案例 - 本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?

        // 本金
        var money = 10000;
        // 利率
        var rate = 0.003;
    
        // money = money + money * rate;
        for (var i = 0; i < 5; i++) {
          money += money * rate;
        }
        console.log(money);
    

    023案例 - 已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?

        // (兔子的规律为数列,1,1,2,3,5,8,13,21)
        
        // 前两个数
        var n1 = 1;
        // 前一个数
        var n2 = 1;
        // 当前数
        var n3;
        for (var i = 3; i <= 9; i++) {
          n3 = n2 + n1;
          n1 = n2;
          n2 = n3;
        }
        console.log(n3);
    

    024案例 - 求一组数中的所有数的和与平均值

        var numbers = [35, 12, 35, 90, 11, 12];
        // 和
        var sum = 0;
        // 平均值
        var avg;
        // 遍历数组
        // for (var i = 0; i <= numbers.length - 1; i++)
        for (var i = 0; i < numbers.length; i++) {
          // sum = sum + numbers[i];
          sum += numbers[i];
        }
        avg = sum / numbers.length;
        console.log('这组数的和:' + sum);
        console.log('这组数的平均值:' + avg);
    

    025案例 - 求一组数中的最大值和最小值,以及所在位置

        var numbers = [120, 13, 101, 88, 10, 25];
        var max = numbers[0];
        var min = numbers[0];
        // 最大值的索引
        var maxIndex = 0;
        // 最小值的索引
        var minIndex = 0;
    
        for (var i = 1; i < numbers.length; i++) {
          // 找大的数
          if (max < numbers[i]) {
            max = numbers[i];
            maxIndex = i;
          }
          // 找小的数
          if (min > numbers[i]) {
            min = numbers[i];
            minIndex = i;
          }
        }
        console.log(max, min);
        console.log(maxIndex, minIndex);
    

    026案例 - 将字符串数组用|或其他符号分割

    方法01 - 使用 for 循环

        var names = ['郭德纲', '郭麒麟', '于谦', '岳云鹏', '烧饼'];
        // 让我们把数组中的每一项 用|或其他符号分割,形成一个字符串  '郭德纲|郭麒麟|于谦|岳云鹏|烧饼'
        // 往第二个元素之前加分隔符
        // 分隔符
        var seperator = '|';
        var str = names[0];
        for (var i = 1; i < names.length; i++) {
          str += seperator + names[i];
        }
        console.log(str);
    

    方法02 - 使用数组的方法

        var names = ['郭德纲', '郭麒麟', '于谦', '岳云鹏', '烧饼'];
        console.log(names.join('|'));
    

    027案例 - 要求将不为0的值存入一个新的数组,生成新的数组

        var numbers = [5, 6, 89, 0, 11, 0, 12, 3, 0];
        
        // 把找到的非0元素存储到一个新的数组中
        var newArray = []; // 空数组
        for (var i = 0; i < numbers.length; i++) {
          if (numbers[i] !== 0) {
            // numbers[i];
            // 找到的非0元素,存储到新的数组中
            newArray[newArray.length] = numbers[i];
          }
        }
        console.log(newArray);
    

    028案例 - 翻转数组

        var numbers = [4, 5, 7, 9];   // 生成一个新的数组  数组中存储 9 7 5 4
        var newArray = [];
        for (var i = numbers.length - 1; i >= 0; i--) {
          newArray[newArray.length] = numbers[i];
        }
        console.log(newArray);
    

    029案例 - 冒泡排序

        // 冒泡排序    -- 从小到大的排序
        var numbers = [1, 2, 3, 4, 5];
        // var count = 0; // 记录循环的次数
        for (var i = 0; i < numbers.length - 1; i++) {
          // 内层循环:控制比较的次数,并且判断两个数的大小,把大的数往后移动,小的数往前移动
          for (var j = 0; j < numbers.length - 1 - i; j++) {
            // 两两比较     从小到大排序 
            if (numbers[j] > numbers[j + 1]) {
              // 交换位置
              var tmp = numbers[j];
              numbers[j] = numbers[j + 1];
              numbers[j + 1] = tmp;
            }
          }
        }
        console.log(numbers);
    

    代码优化:

        var numbers = [1, 2, 3, 4, 5];
        // 外层循环:控制趟数,每一趟找到一个最大值
        for (var i = 0; i < numbers.length - 1; i++) {
          // 假设数据排好顺序了
          var isSort = true;
          // 内层循环:控制比较的次数,并且判断两个数的大小,把大的数往后移动,小的数往前移动
          for (var j = 0; j < numbers.length - 1 - i; j++) {
            // 两两比较     从小到大排序 
            if (numbers[j] > numbers[j + 1]) {
              // 没有排好 
              isSort = false;
              // 交换位置
              var tmp = numbers[j];
              numbers[j] = numbers[j + 1];
              numbers[j + 1] = tmp;
            }
          }
          // 某一趟结束,判断一下排序是否结束
          // 如何判断排序是否排好,根据是否发生了数据交换,如果发生了数据交换说明没有排好
          if (isSort) {
            // 如果排好顺序
            break;
          }
        }
        console.log(numbers);
    

    030案列 - 封装一个函数,可以求一组数的最大值。

        function getMax() {
          var max = arguments[0];
          // 使用 arguments 获取动态实参
          for (var i = 1; i < arguments.length; i++) {
            if (max < arguments[i]) {
              max = arguments[i];
            }
          }
          return max;
        }
        // 测试 求任意一组数的最大值
        var max = getMax(5, 10, 1, 5, 100);
        console.log(max);
    

    031案例 - 封装一个函数可以求任意个数的和

        function getSum() {
          var sum = 0;
          // 使用 arguments 获取动态实参
          for (var i = 0; i < arguments.length; i++) {
            sum += arguments[i];
          }
          return sum;
        }
        // 测试 求任意个数的和
        var sum = getSum(5, 1, 3, 4);
        console.log(sum);
    

    032案例 - 求斐波那契数列Fibonacci中的第n个数是多少?

        // 斐波那契数列特征:1 1 2 3 5 8 13 21...
        function getFib(n) {
          // 函数体
          var n1 = 1;
          var n2 = 1;
          var n3;
          for (var i = 3; i <= n; i++) {
            n3 = n1 + n2;
            n1 = n2;
            n2 = n3;
          }
          return n3;
        }
        // 求第 6 个斐波那契数列的数
        var r = getFib(6);
        console.log(r);
    

    033案例 - 翻转数组,返回一个新数组

        function reverse(array) {
          var newArray = [];
          for (var i = array.length - 1; i >= 0; i--) {
            newArray[newArray.length] = array[i];
          }
          return newArray;
        }
        // 测试翻转一个数组
        var arr = [5, 3, 2, 1];
        console.log(reverse(arr));
    

    034案例 - 对数组排序,从小到大 -- 使用冒泡排序

        function sort(array) {
          // 外层循环 控制趟数
          for (var i = 0; i < array.length - 1; i++) {
            // 假设排好序了
            var isSort = true;
            // 内层循环 控制比较的次数
            for (var j = 0; j < array.length - 1 - i; j++) {
              if (array[j] > array[j + 1]) {
                isSort = false;
                // 交换位置
                var tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
              }
            }
            // 判断是否排好了
            if (isSort) {
              break;
            }
          }
          return array;
        } 
        // 测试 排序一个数组
        var array = [34, 12, 88, 20, 30];
        console.log(sort(array));
    

    035案例 - 输入一个年份,判断是否是闰年[闰年:能被4整数并且不能被100整数,或者能被400整数]。

        function isRun(year) {
          var result = false;
          if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
            result = true;
          } 
          return result;
        }
    
        console.log(isRun(2016));
    

    036案例 - 输入某年某月某日,判断这一天是这一年的第几天?

        // 判断年份是否是闰年
        function isRun(year) {
          var result = false;
          if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
            result = true;
          } 
          return result;
        }
        // 获取年月日 是当前年的多少天
        function getDays(year, month, day) {
          // 计算总共有多少天
          var days = day;   // 当前月份的天数
          for (var i = 1; i < month; i++) {
            switch (i) {
              case 1:
              case 3:
              case 5:
              case 7:
              case 8:
              case 10:
              case 12:
                days += 31;
                break;
              case 4:
              case 6:
              case 9:
              case 11:
                days += 30;
                break;
              case 2:
                // 判断是平年28还是闰年29
                if (isRun(year)) {
                  days += 29;
                } else {
                  days += 28;
                }
                break;
            }
          }
          return days;
        } 
        // 测 1998年5月2日
        console.log(getDays(1998, 5, 2));
    

    037案例 - 求10-20之间的随机数 [10, 20] 整数

        // 封装函数
        function random(min, max) {
          return Math.floor(Math.random() * (max - min + 1) + min);
        }
        // 调用函数
        console.log(random(10, 20));
    

    038案例 - 随机生成颜色RGB [0, 255] 整数

        // 使用rgb 颜色模式:rgb(100, 100, 100) 
        // 封装整数区间
        function random(min, max) {
          return Math.floor(Math.random() * (max - min + 1) + min);
        }
        // 封装每种颜色模式的值区间
        function randomRGB(min, max) {
          var color1 = random(min, max);
          var color2 = random(min, max);
          var color3 = random(min, max);
    
          return 'rgb(' + color1 + ', ' + color2 + ', ' + color3 + ')';
        }
        // 随机生成颜色
        console.log(randomRGB(0, 255))
    

    039案例 - 模拟实现 max()/min() 方法 ,并封装

       var MyMath = {
        max: function () {
         var max = arguments[0];
         for (var i = 1; i < arguments.length; i++) {
           if (max < arguments[i]) {
             max = arguments[i];
           }
         }
         return max;
        },
        min: function () {
          var min = arguments[0];
           for (var i = 1; i < arguments.length; i++) {
             if (min > arguments[i]) {
               min = arguments[i];
             }
           }
           return min;
        }
       };
      // 测试封装的方法
      console.log(MyMath.max(10, 1, 100, 20));
    

    040案例 - 封装一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式

        function formatDate(date) {
          // 判断参数date是否是日期对象
          // instanceof  instance 实例(对象)   of 的
          // console.log(date instanceof Date);
          if (!(date instanceof Date)) {
            console.error('date不是日期对象')
            return;
          }
    
          var year = date.getFullYear(),
              month = date.getMonth() + 1,
              day = date.getDate(),
              hour = date.getHours(),
              minute = date.getMinutes(),
              second = date.getSeconds();
          
          // 以两位数显示
          // if (month < 10) {
          //   month = '0' + month;
          // }
          
          month = month < 10 ? '0' + month : month;
          day = day < 10 ? '0' + day : day;
          hour = hour < 10 ? '0' + hour : hour;
          minute = minute < 10 ? '0' + minute : minute;
          second = second < 10 ? '0' + second : second;
    
          return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
        }
    // ---------调用封装的函数-----------------
        var d = new Date();
        var dateStr = formatDate(d);
        console.log(dateStr);
    
    
        d = new Date(2017, 8, 10);
        var dateStr = formatDate(d);
        console.log(dateStr);
    

    041案例 - 计算时间差,返回相差的天/时/分/秒

        function getInterval(start, end) {
          // 两个日期对象,相差的毫秒数
          var interval = end - start;
          // 求 相差的天数/小时数/分钟数/秒数
          var day, hour, minute, second;
    
          // 两个日期对象,相差的秒数
          // interval = interval / 1000;
          interval /= 1000;
    
          day = Math.round(interval / 60 / 60 / 24);
          hour = Math.round(interval / 60 / 60 % 24);
          minute = Math.round(interval / 60 % 60);
          second = Math.round(interval % 60);
    
          return {
            day: day,
            hour: hour,
            minute: minute,
            second: second
          }
        }
    
        var d1 = new Date();
        var d2 = new Date(2017, 9, 1);
    
        var o = getInterval(d1, d2);
        console.log(o);
    

    042案例 - 模拟 sort() 方法内部实现

        // 对数组排序,从小到大  -- 冒泡排序
        function sort(array, fnCompare) {
          // 外层循环 控制趟数
          for (var i = 0; i < array.length - 1; i++) {
            // 假设排好序了
            var isSort = true;
            // 内层循环 控制比较的次数
            for (var j = 0; j < array.length - 1 - i; j++) {
    
              if (fnCompare(array[j], array[j + 1]) > 0) {
                isSort = false;
                // 交换位置
                var tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
              }
            }
            // 判断是否排好了
            if (isSort) {
              break;
            }
          }
        } 
    
        var arr = [56, 10, 1, 17];
        
    
        sort(arr, function (a, b) {
          return b - a;
        })
    
        console.log(arr);
    

    043案例 - 将一个字符串数组的元素的顺序进行反转。

        var arr = ["a", "b", "c", "d"];
        arr.reverse();
        console.log(arr);
    

    044案例 - 工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除

        var arr = [1500, 1200, 2000, 2100, 1800];
        // filter方法兼容 IE9 及以上浏览器
        var newArray = arr.filter(function (item) {
          // item就是数组中的每一个元素
          return item < 2000;
        })
        console.log(newArray);
    

    045案例 - 找到数组['c', 'a', 'z', 'a', 'x', 'a']中每一个a出现的位置

        var arr = ['c', 'a', 'z', 'a', 'x', 'a'];
        // while   do...while
        var index = -1;
        do {
          // indexOf 如果没有匹配到指定字符,返回 -1
          index = arr.indexOf('a', index + 1);
    
          if (index !== -1) {
            console.log(index);
          }
        } while (index !== -1);
    

    046案例 - 编写一个方法去掉一个数组['c', 'a', 'z', 'a', 'x', 'a']的重复元素

        function clear(arr) {
          // 1 如何获取数组中每一个元素出现的次数
          var o = {}; // 记录数组中元素出现的次数
          for (var i = 0; i < arr.length; i++) {
            var item = arr[i]; // 数组中的每一个元素
            // o[item] = 1;
            // 判断o对象是否有当前遍历到的属性
            if (o[item]) {
              // 如果o[item] 存在,说明次数不为1
              o[item]++;
            } else {
              // 如果o[item] 不存在,说明是第一次出现
              o[item] = 1;
            }
          }
    
          // 2 生成一个新的数组,存储不重复的元素
          var newArray = [];
          // 遍历对象o中的所有属性
          for (var key in o) {
            // 判断o对象中当前属性的值是否为 1  如果为1 说明不重复直接放到新数组中
            if (o[key] === 1) {
              newArray.push(key);
            } else {
              // o对象中当前属性 次数不为1 ,说明有重复的,如果有重复的话,只存储一次
              // 判断当前的newArray数组中是否已经有该元素  
              if (newArray.indexOf(key) === -1) {
                newArray.push(key);
              }
            }
          }
          return newArray;
        } 
    
        // 去除数组中的 a
        var array = ['c', 'a', 'z', 'a', 'x', 'a'];
        var newArray = clear(array);
        console.log(newArray);
    

    047案例 - 截取字符串"我爱中华人民共和国",中的"中华"

        var s = '我爱中华人民共和国';
        // 第一个参数,截取的开始位置
        // 第二个参数,截取的长度
        var newStr = s.substr(2, 2);
        console.log(newStr);
    

    048案例 - "abcoefoxyozzopp"查找字符串中所有o出现的位置

        // indexOf  lastIndexOf
        var s = 'abcoefoxyozzopp';
        // 当查找不到的时候返回的是-1
        var index = -1;
        do {
          index = s.indexOf('o', index + 1);
          if (index !== -1) {
            console.log(index);
          }
        } while (index !== -1);
    

    049案例 - 把字符串中所有的o替换成!

        var s = 'abcoefoxyozzopp';
    
        //  abc!efoxyozzopp
        //  只会替换第一个找到的字符串
        // s = s.replace('o', '!');
        // console.log(s);
        // 
        var index = -1;
        do {
          index = s.indexOf('o', index + 1);
    
          if (index !== -1) {
            // 替换
            s = s.replace('o', '!');
          }
        } while(index !== -1);
        console.log(s);
    

    050案例 - 把字符串中的所有空白去掉' abc xyz a 123 '

        // trim() 只可以去除字符串前后的空格
        // s = s.trim();
        // console.log('===' + s + '===');
        
        // 思路1 可以把 字符串中的所有  空格 字符串  用replace替换成 ''空字符串
        // 思路2 使用split 简化
        
        // split 演示如何使用
        // var str = 'a,b,c,d';
        // var arr = str.split(',');
        // console.log(arr.join('!'));
        
         var s = '   abc       xyz  a    123   ';   
         var arr = s.split(' ');
         console.log(arr.join(''));
    

    051案例 - 判断一个字符串中出现次数最多的字符,统计这个次数

        var s = 'abcoefoxyozzopp';
        var ch;
        // 此字符出现的次数
        var num;
        // 记录字符串中每一个字符出现的次数
        var o = {}; 
    
        for (var i = 0; i < s.length; i++) {
          var item = s.charAt(i);
          if (o[item]) {
            // 已经有该属性,+1
            o[item]++;
          } else {
            // 对象中没有该属性
            o[item] = 1;
          }
        }
    
         // 2 求最大值 并且找到次数最多的字符
         // 假设最大值是1
         num = 1;
         for (var key in o) {
           if (num < o[key]) {
            // 最多的次数
             num = o[key];
             // 次数最多的字符
             ch = key;
           }
         }
    
         console.log(num);
         console.log(ch);
    

    052案例 - 获取url中?后面的内容

        var url = 'http://www.itheima.com/login?name=zs&age=18&a=1&b=2';
    
        // console.log(url.substr(2));
        // var index = url.indexOf('?') + 1;
        // console.log(url.substr(index));
    
    
        // {
        //   name: 'zs',
        //   age: 18
        // }
        
        // 获取url后面的参数
        function getParams(url) {
          // 获取? 后面第一个字符的索引
          var index = url.indexOf('?') + 1;
          // url中?后面的字符串 name=zs&age=18&a=1&b=2
          var params = url.substr(index);
          // 使用& 切割字符串 ,返回一个数组
          var arr = params.split('&');
          var o = {};
          // 数组中每一项的样子 key = value
          for (var i = 0; i < arr.length; i++) {
            var tmpArr = arr[i].split('=');
            var key = tmpArr[0];
            var value = tmpArr[1];
    
            o[key] = value;
          }
          return o;
        }
    
        var obj = getParams(url);
        console.log(obj);
    
        console.log(obj.name);
        console.log(obj.age);
    
  • 相关阅读:
    sparkSQL
    Spark分区实例(teacher)
    SparkCore的性能优化
    Linux 输出当前路径下某个文件的绝对路径
    bulid runnable jar file with dependencies
    bulid runnable jar file with dependencies and main class
    spring mvc 整合jsp和thymeleaf两个模板引擎
    解决Volley中的JsonObjectRequest jsonRequest参数无法被服务端读取的问题
    为volley的http请求添加自定义request header
    使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
  • 原文地址:https://www.cnblogs.com/pingzx/p/10654130.html
Copyright © 2020-2023  润新知