zoukankan      html  css  js  c++  java
  • JS基石之-----常用方法封装的js库

    解析 URL Params 为对象

    let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';
    parseParam(url)
    /* 结果
    { user: 'anonymous',
      id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
      city: '北京', // 中文需解码
      enabled: true, // 未指定值得 key 约定为 true
    }
    */
    function parseParam(url) {
      const paramsStr = /.+?(.+)$/.exec(url)[1]; // 将 ? 后面的字符串取出来
      const paramsArr = paramsStr.split('&'); // 将字符串以 & 分割后存到数组中
      let paramsObj = {};
      // 将 params 存到对象中
      paramsArr.forEach(param => {
        if (/=/.test(param)) { // 处理有 value 的参数
          let [key, val] = param.split('='); // 分割 key 和 value
          val = decodeURIComponent(val); // 解码
          val = /^d+$/.test(val) ? parseFloat(val) : val; // 判断是否转为数字
    
          if (paramsObj.hasOwnProperty(key)) { // 如果对象有 key,则添加一个值
            paramsObj[key] = [].concat(paramsObj[key], val);
          } else { // 如果对象没有这个 key,创建 key 并设置值
            paramsObj[key] = val;
          }
        } else { // 处理没有 value 的参数
          paramsObj[param] = true;
        }
      })
    
      return paramsObj;
    }
    const getUrlKey = function (name) {
      return (
        decodeURIComponent(
          (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
            location.href
          ) || [, ""])[1].replace(/+/g, "%20")
        ) || null
      )
    }
     
    /**
     * 封装检验数据类型
     */

    const isType = type => target => `[object ${type}]` === Object.prototype.toString.call(target) const isArray = isType('Array') console.log(isArray(''))
    /**
     * 存储localStorage
     */
    export const setStore = (name, content) => {
        if (!name) return
        if (typeof content !== 'string') {
            content = JSON.stringify(content)
        }
        window.localStorage.setItem(name, content)
    }
    
    
    /**
     * 获取localStorage
     */
    export const getStore = name => {
        if (!name) return
        return window.localStorage.getItem(name)
    }
    
    /**
     * 删除localStorage
     */
    export const removeStore = name => {
        if (!name) return
        window.localStorage.removeItem(name)
    }
    
    /**
     * 设置cookie
     */
    export const setCookie = (key, value, day) => {
        const date = new Date()
        date.setDate(date.getDate() + day)
        document.cookie = key + '=' + value + ';expires=' + date + ';path=/'
    }
    
    /**
     * 获取cookie
     */
    export const getCookie = cname => {
        const name = cname + '='
        const ca = document.cookie.split(';')
        for (let i = 0; i < ca.length; i++) {
            let c = ca[i]
            while (c.charAt(0) === ' ') c = c.substring(1)
            if (c.indexOf(name) !== -1) return c.substring(name.length, c.length)
        }
        return ''
    }
    
    /**
     * 删除cookie
     */
    export const delCookie = name => {
        const exp = new Date()
        exp.setTime(exp.getTime() - 1)
        const cval = getCookie(name)
        if (cval != null) {
            document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString() + ';path=/'
        }
    }
    
    /**
     * 获取url参数
     */
    export const getUrlId = name => {
        const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
        const r = window.location.search.substr(1).match(reg)
        if (r != null) return unescape(r[2])
        return null
    }
  • 相关阅读:
    C#与C++与互操作
    WPF GridView动态添加项并读取数据
    C#使用消息队列(MSMQ)
    使用代码浏览WPF控件模版
    PowerShell将运行结果保存为文件
    opencv + ffmpeg
    vmware
    HttpComponents Downloads
    pytorch 安装
    opencv 3.4.0 的编译
  • 原文地址:https://www.cnblogs.com/style-hyh/p/12059977.html
Copyright © 2011-2022 走看看