美文网首页
Days25 笔试-JS

Days25 笔试-JS

作者: biu丶biubiu | 来源:发表于2018-08-24 21:41 被阅读0次

    1.封装函数 f,使 f 的 this 指向指定的对象

    function bindThis(func, oTarget) {
        return function(){
            return func.apply(oTarget, arguments);
        };
    }
    

    2.获取url参数

     ###(1)获取路径
    
    // 首先获取 Url,然后把 Url 通过截成两部分,再从后一部分中截取相对路径。
    //如果截取到的相对路径中有参数,则把参数去掉。
    function queryUrlPath()
      {
        var url = document.location.toString();
        var arrUrl = url.split("//");
    
        var start = arrUrl[1].indexOf("/");
        var relUrl = arrUrl[1].substring(start);
    
        if(relUrl.indexOf("?") != -1){
          relUrl = relUrl.split("?")[0];
        }
        return relUrl;
      }
    console.log( queryUrlPath())
    

    (2)获取url中指定参数

    使用正则表达式

    function getQueryString(name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); // 匹配目标参数
      var result = window.location.search.substr(1).match(reg); // 对querystring匹配目标参数
      if (result != null) {
        return decodeURIComponent(result[2]);
      } else {
        return null;
      }
    }
    console.log(getQueryString('id'))
    
    

    数组split

    //获取url中指定参数
     function getQueryString(paraName) {
        var url = window.location.toString();
        var arrObj = url.split("?");
        if (arrObj.length > 1) {
          var arrPara = arrObj[1].split("&");
          var arr;
          for (var i = 0; i < arrPara.length; i++) {
            arr = arrPara[i].split("=");
            if (arr != null && arr[0] == paraName) {
              return arr[1];
            }
          }
          return "";
        }
        else {
          return "";
        }
      }
    console.log(getQueryString("id"))
    

    3.数组去重

    //ES6普通数据类型可以这样用,对象就不行了
    Array.prototype.uniq = function () {
        return [...new Set(this)];
    }
    
    Array.prototype.uniq = function () {
       var resArr = [];
       var flag = true;
         
       for(var i=0;i<this.length;i++){
           if(resArr.indexOf(this[i]) == -1){
               if(this[i] != this[i]){   //排除 NaN
                  if(flag){
                       resArr.push(this[i]);
                       flag = false;
                  }
               }else{
                    resArr.push(this[i]);
               }
           }
       }
        return resArr;
    }
    

    4.时间格式化输出

    //slice() 方法可从已有的数组中返回选定的元素。如果是负数,那么规定从数组尾部开始算起的位置
    function formatDate(t,str){
      var obj = {
        yyyy:t.getFullYear(),
        yy:(""+ t.getFullYear()).slice(-2),
        M:t.getMonth()+1,
        MM:("0"+ (t.getMonth()+1)).slice(-2),
        d:t.getDate(),
        dd:("0" + t.getDate()).slice(-2),
        H:t.getHours(),
        HH:("0" + t.getHours()).slice(-2),
        h:t.getHours() % 12,
        hh:("0"+t.getHours() % 12).slice(-2),
        m:t.getMinutes(),
        mm:("0" + t.getMinutes()).slice(-2),
        s:t.getSeconds(),
        ss:("0" + t.getSeconds()).slice(-2),
        w:['日', '一', '二', '三', '四', '五', '六'][t.getDay()]
      };
      return str.replace(/([a-z]+)/ig,function($1){return obj[$1]});
    }
    

    5.邮箱验证

    //    \w查找单词字符 *  表示的是:前面的表达式出现了0次到多次 +  表示的是:前面的表达式出现了1次
    //   到多次  ?  表示的是:前面的表达式出现了0次到1次,^ 表示的是以什么开始,$表示的是以什么结束,
    function isAvailableEmail(sEmail) {
       return /^(\w+)(\.\w+)*@(\w+)(\.\w+)*.(\w+)$/i.test(sEmail);
    }
    

    6.深拷贝

    function deepClone(obj){
        let objClone = Array.isArray(obj)?[]:{};
        if(obj && typeof obj==="object"){
            for(key in obj){
                if(obj.hasOwnProperty(key)){
                    //判断ojb子元素是否为对象,如果是,递归复制
                    if(obj[key]&&typeof obj[key] ==="object"){
                        objClone[key] = deepClone(obj[key]);
                    }else{
                        //如果不是,简单复制
                        objClone[key] = obj[key];
                    }
                }
            }
        }
        return objClone;
    }    
    let a=[1,2,3,4],
        b=deepClone(a);
    a[0]=2;
    console.log(a,b);
    

    相关文章

      网友评论

          本文标题:Days25 笔试-JS

          本文链接:https://www.haomeiwen.com/subject/xwhiiftx.html