常见的扩展题的总结

1、统计一个字符在字符串中出现的次数

方法一:	
   	var arr = "helloollehword";
       var object = {
   
       };
       for(var i = 0;i < arr.length;i++){
           var key = arr[i];
           if(object[key]){
               object[key]++;
           } else {
               object[key] = 1
           }
       }
       console.log(object);
   方法二:(拿到字符串里面关于l的次数)
   	var arr = "helloollehword";
       var len = arr.length;
       var array = arr.replace(/l/g,"");
       var len1 = array.length;
       var lengthTimes = len-len1;
       console.log(lengthTimes);
       

2、数组去重

 方法一:
 	var array = [1,2,3,4,5,3,21,1,2,3];
     var set = new Set(array);
     var result = Array.from(set);
     console.log(result);
 
 方法二:
     var array = [1,2,3,4,5,3,21,1,2,3];
     var temp = [];
     for(let index = 0;index < array.length;index++){
       if(temp.indexOf(array[index]) == -1){
         temp.push(array[index])
       }
     }
     console.log(temp);

3、判断字符串中出现大写字母的个数和小写个数

    方法一:
     	var str = "abc1231ABDCfelDef";
        var min = 0;
        var max = 0;
        for (var i = 0; i < str.length; i++) {
          var code = str.charCodeAt(i);
          if (code >= 65 && code <= 90) {
            max++;
          }
          if (code >= 97 && code <= 122) {
            min++;
          }
        }
        console.log("小写字母:" + min);
        console.log("大写字母:" + max);
    
    方法二:
    	var str = "abc1231ABDCfelDef";
        var min = str.length - str.replace(/[a-z]/g,"").length;
        var max = str.length - str.replace(/[/A-Z]/g,"").length;
        console.log("小写字母:" + min);
        console.log("大写字母:" + max);

4、冒泡排序

    var arr = [1,20,4,60,10,35,65,18];
    // 外层循环,控制比较轮数
    for(var i = 0;i<arr.length-1;i++){
        // 内层循环,控制每轮的比较次数
        for(var j = 0;j<arr.length-1;j++){
            // 比较相邻的俩个数
            if(arr[j] > arr[j+1]){//升序排序
                // 交换位置
                let temp = 0;
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    console.log(arr); // 1,  4, 10, 18,20, 35, 60, 65

5、选择排序

    // 选择排序: 从第一个位置开始比较,找出最小的,和第一个位置互换,开始下一轮
    var arr = [1, 20, 4, 60, 10, 35, 65, 18];
    // 外层循环   控制比较轮数
    for (var i = 0; i < arr.length - 1; i++) {
        var main = i; //假设,main为最小值对应的索引值   // main = 1  20
        // 内层循环,控制每轮的比较次数
        // 每一轮开始先和那个元素开始比较:i+1
        for (var j = i + 1; j < arr.length; j++) { //  j = 20  4
            if (arr[main] > arr[j]) {  //如果 mian > j   即用第一个数来比较其他的数
                main = j;
            }
        }
        // 找出最小值,进行元素交换
        // 如果最小值的索引值不是假设的索引,需要交换位置
        if (main != i) {
            let temp = 0;
            temp = arr[i];
            arr[i] = arr[main];
            arr[main] = temp;
        }
    }
    console.log(arr); //1,  4, 10, 18,20, 35, 60, 65

6、获取数组中的最大值和最小值

6.1、排序法

    	var a = [7, 48, 10, 23, 19];
        // 排序(从小到大排序)
        a.sort(function(a, b) {
          return a - b;
        });
        // 拿到最小值
        var min = a[0];
        // 拿到最大值
        var max = a[a.length - 1];
        console.log("最小值:" + min);
        console.log("最大值:" + max);
    	
    	//结果:
    	最小值:7
    	最大值:48

6.2、假设法

     麻烦:
    	// 获取最大值:
    
        var arr = [22, 13, 6, 55, 30];
        var max = arr[0];
    
        for (var i = 1; i < arr.length; i++) {
          var cur = arr[i];
          cur > max ? (max = cur) : null;
        }
    
        console.log("最大值:" + max); // 55
    
        // 获取最小值:
    
        var array = [22, 13, 6, 55, 30];
        var min = array[0];
    
        for (var j = 1; j < array.length; j++) {
          var cur1 = array[j];
          cur1 < min ? (min = cur1) : null;
        }
        console.log("最小值:" + min); // 6
    简写:
      	var array = [22,13,6,55,30];
        var min = array[0];
        var max = array[0];
        for(var i = 0;i<array.length;i++){
          var count = array[i];
          count > max ? (max = count) : null;
          count < min ? (min = count) : null;
        }
        console.log("最小值:" + min);
        console.log("最大值:" + max);
    	
    结果:
    最小值:6
    最大值:55

6.3、使用Math的方法实现

    	var array = [22,13,6,55,30];
        var max = Math.max.apply(null,array);
        var min = Math.min.apply(null,array);
        console.log("最小值:" + min);
        console.log("最大值:" + max);

6.4、使用扩展运算符

    	 var arr = [22, 13, 6, 55, 30];
        console.log("最小值:" + Math.min(...arr));
        console.log("最大值:" + Math.max(...arr));

8、大小写转换

    方法:
    1、转换成小写:toLowerCase()
    2、转换成大写:toUpperCase()

9、js实现字符串反转

9.1、split() 、reverse() 、 join()

    var str = "abcdef"; 
    console.log( str.split("").reverse().join("") );'); 
    //分解
    var str="abcdefg";
    var a=str.split(""); //先拆分成数组
    var b=str.split("").reverse(); //再反转,但还是数组
    var c=str.split("").reverse().join("");//最后把数组变成字符串

9.2、使用遍历的方法

    	var str2 = "abc";
        var str2arr = str2.split("");
        console.log(str2arr);
        var arr = [];
        for (var i = str2arr.length - 1; i >= 0; i--) {
          arr.push(str2arr[i]);
        }
        console.log("反转后的字符串为:", arr.join(""));
    	//结果
    	cba

9.3、使用unshift()方法

     	 var str3 = "abc";
        var str3arr = str3.split("");
        var arr3 = [];
        for (var i = 0; i < str3arr.length; i++) {
          arr3.unshift(str3arr[i]);
        }
        console.log("反转后的字符串为:", arr3.join(""));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值