zoukankan      html  css  js  c++  java
  • js工具函数

    1. 解析 URL Params 为对象

    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;
    }
    
    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
    }
    */
    

    2. 字符串转义(防篡改)

    const escapeMap = {
      //'&': '&',
      '<': '<',
      '>': '>',
      '"': '"',
      "'": '''
    };
      
    function escape(string = '') {
      const reg = new RegExp(`[${Object.keys(escapeMap).join('')}]`, 'g');
      return string.replace(reg, item => escapeMap[item]);
    }
    

      点击进入原文

  • 相关阅读:
    python高级特性和高阶函数
    代理模式及案例
    我的报错错误记录
    摘抄-编码规范
    测试java的Lambda语法
    测试IDEA将新建项目提交到github上
    js处理科学计数法
    测试java操作运算符
    java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)
    sqlserver日期函数
  • 原文地址:https://www.cnblogs.com/mafy/p/12082102.html
Copyright © 2011-2022 走看看