js编程题

2,194 阅读1分钟

1、数组去重

    let arr = [1,2,3,4,5,1,2,2,1];
    
    function clearRepeat(arr){
        return [...new Set(arr)];
    }
    
    function clearRepeat1(arr){
        let obj = {};
        let newArr = [];
        arr.forEach(element => {
           if(!obj[element]){
               obj[element] = 1;
               newArr.push(element);
           }
        })
        return newArr;
    }

2、js获取URL中参数值

    var newurl = 'http://dev.cekid.com:9018/r/products?store_code=8002&city
    code=320100&cityname=%E5%90%88%E8%82%A5%E5%B8%82&cityid=340100&
    entityid=8029&entityname=%E5%90%88%E8%82%A5%E7%BE%8E%E6%B8%B8'
    
    
    function getUrl(url){
        let newArr = [];
        let urlArr = url.slice(url.indexOf('?') + 1).split('&');
        urlArr.forEach(element => {
            var obj = {}
            var arr = element.split('=');
            obj[arr[0]] = arr[1];
            newArr.push(obj);
        });
        return newArr;
    }

3、排序

  • 冒泡排序

      var arr = [1,2,4,3,6,9,7,6,8,5];
      function incSort(arr){
          let len = arr.length;
          let mid;
          for(var i = len - 1; i > 0; i--){
              for(var j = 0; j < i; j++){
                  if(arr[j] > arr[j+1]){
                      mid = arr[j];
                      arr[j] = arr[j+1];
                      arr[j+1] = mid;
                  }
              }
          }
          return arr;
      }
      console.log(incSort(arr)); //[1, 2, 3, 4, 5, 6, 6, 7, 8, 9]
    

4、去除字符串前后的空格

    var str = '   abc 1  ';
    function trim(str){
        return str.replace(/^\s+|\s+$/g,'');
    }
    console.log(trim(str)) // "abc 1"

5、找出一段英文字符串中出现次数最多的单词

    var str = "hello thank funny hello what suck it dick thank";
    function findMostWord(str){
        var arr = str.split(" ");
        var obj = {};
        var len = arr.length;
        for(var i = 0; i < len; i++){
            if(obj[arr[i]]){
                obj[arr[i]] += 1;
            }else{
                obj[arr[i]] = 1;
            }
        }
        var max = 0;
        var result;
        for(var key in obj){
            if(obj[key] > max){
                max = obj[key];
                result = key;
            }
        }
        return result;
    }
    console.log(findMostWord(str)); //hello   

bug:有多个结果时只能返回第一个

6、字符串翻转

    let str = "abcdefg";
    function reverse(str){
        return str.split('').reverse().join('');
    }
    console.log(reverse(str)); // "gfedcba"

7、数组降序排列

    let arr = [1,4,2,9,5,6];
    function descending(arr){
        arr.sort(function(a,b){
            return b-a;
        })
        return arr;
    }
    console.log(descending(arr)) // [9, 6, 5, 4, 2, 1]

8、对象的深度克隆

    function clone(obj){
        if(obj instanceof Array || obj instanceof Object){
            var buf = obj instanceof Array ? [] : {};
            for(var key in obj){
                buf[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key];
            }
            return buf;
        }else{
            return obj;
        }
    }
    var obj = {a:1,b:2}
    var obj1 = clone(obj);