美文网首页
JavaScript函数分享

JavaScript函数分享

作者: WEB耳 | 来源:发表于2019-07-15 15:40 被阅读0次

    BB在前面

    分享一些自己在项目中会用到的一些很实用的函数助手(保持更新)

    01.随机数生成

    用到的函数

    Math.random(): 生成0-1之间的随机数,有极小的概率得到0
    Math.pow():幂指数运算
    Math.ceil() :数字向上取证

    show me your code

    /**
     * length 生成随机数的长度
     */
    function getRandom (length) {
      let num = 0
      while(length > 0){
        let tempRandom = Math.ceil(Math.random()*10) *Math.pow(10, length)
        if (tempRandom !== 0) {
          num += tempRandom
          --length
        }
      }
      return num
    }
    

    02.请求参数签名

    签名需要使用MD5(或其他)数据加密方式,说以需要用到js-md5.js函数库

    用到的函数(库)

    1.使用Bower安装
    命令:bower install md5
    2.使用nodejs安装
    命令:npm install js-md5

    show me your code

    /**
     *data 需要签名的数据
     *signKey 签名秘钥(与服务器端约定)
     */
    function getSign (data, signKey) {
      delete data['sign']
      let keys = []
      for (let k in data) {
        keys.push(k)
      }
      keys.sort()
      let kv = []
      for (let v of keys) {
        kv.push(v + '=' + data[v])
      }
      let kvStr = kv.join('&')
      kvStr = kvStr + signKey
      let sign = MD5(kvStr).toString()
      return sign
    }
    

    03.随机字符串生成

    生成数字和字母的随机字符串(含大小写),长度自定义

    show me your code

    function randomString(length) {
        let chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        let result = '';
        for (var i = length; i > 0; --i) {
          result += chars[Math.floor(Math.random() * chars.length)]
        }
        return result
      }
    

    04.时间戳格式化

    将时间戳格式化为自定义的显示方式,如:yy-MM-dd hh:mm:ss (2019-07-16 09:24:36)

    yy:年year
    MM:月month
    dd: 天day
    hh:时
    mm:分
    ss:秒
    qq:季度
    SS:毫秒

    show me your code

    /**
     *fmt 时间格式
     *time 需要格式化的时间,默认当前时间
     */
    function timeToStr (fmt = 'yy-MM-dd hh:mm:ss', time = 0) {
        let newDate = new Date()
        if (time === 0) {
          time = Date.now()
        }
        let o = {
          "M+": newDate.getMonth() + 1, // 月份
          "d+": newDate.getDate(), // 日
          "h+": newDate.getHours(), // 小时
          "m+": newDate.getMinutes(), // 分
          "s+": newDate.getSeconds(), // 秒
          "q+": Math.floor((newDate.getMonth() + 3) / 3), // 季度
          "S": newDate.getMilliseconds() // 毫秒
        }
        if (/(y+)/.test(fmt)) {
          fmt = fmt.replace(RegExp.$1, (newDate.getFullYear() + ""))
        }
        for (let k in o) {
          if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
          }
        }
        return fmt
      }
    

    05. PHP函数parse_str的javascript实现

    把查询字符串解析到变量中

    string 必需。规定要解析的字符串。
    array 可选。规定存储变量的数组名称。该参数指示变量存储到数组中。

    show me your code

    /**
     *string    必需。规定要解析的字符串。
     *result    可选。规定存储变量的对象名称。该参数指示变量存储到对象中。
     */
    function parse_str(str, result = {}) {
        let query = str.split("&");
        filterQuery = query.filter(function (el) {
            if(el != null && el != '' && el != undefined  && el != 'undefined'){
                return el
            }
        });
        if(filterQuery.length <= 0) return result;
        filterQuery.forEach(element => {
            let res = element.split("=");
            if(res.length === 2) result[`${res[0]}`] = res[1]
        });
        return result
    }
    

    相关文章

      网友评论

          本文标题:JavaScript函数分享

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