Js方法整理自用(未完)

本文提供了一系列实用的JavaScript函数,包括解析URL参数、格式化时间戳、数组转换为周几显示、深拷贝对象、下载文件、参数拼接等,旨在帮助开发者提高编程效率。
// 获取url中"?"符后的字串
function GetRequest() {
  var url = location.search
  var theRequest = new Object()
  if (url.indexOf("?") != -1) {
    var str = url.substr(1)
    strs = str.split("&")
    for (var i = 0; i < strs.length; i++) {
      theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1])
    }
  }
  return theRequest
}

// 时间戳转日期格式
function format (date, type) {
  if (!date) return ''
  date = typeof date === 'number' ? new Date(date) : date
  type = type || 'yyyy-MM-dd HH:mm:ss'
  let obj = {
    'y': date.getFullYear(), // 年份,注意必须用getFullYear
    'M': date.getMonth() + 1, // 月份,注意是从0-11
    'd': date.getDate(), // 日期
    'q': Math.floor((date.getMonth() + 3) / 3), // 季度
    'w': date.getDay(), // 星期,注意是0-6
    'H': date.getHours(), // 24小时制
    'h': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
    'm': date.getMinutes(), // 分钟
    's': date.getSeconds(), // 秒
    'S': date.getMilliseconds() // 毫秒
  }
  let week = ['天', '一', '二', '三', '四', '五', '六']
  for (let i in obj) {
    type = type.replace(new RegExp(i + '+', 'g'), function (m) {
      let val = obj[i] + ''
      if (i === 'w') return (m.length > 2 ? '星期' : '周') + week[val]
      for (let j = 0, len = val.length; j < m.length - len; j++) val = '0' + val
      return m.length === 1 ? val : val.substring(val.length - m.length)
    })
  }
  return type
}
// code数组转周几
function getWeekList (weekStr) {
  let weekArr = weekStr.split(',').sort()
  let weekDayArr = []
  for (let weekDay of weekArr) {
    switch (weekDay) {
      case '1':
        weekDayArr.push('一')
        break
      case '2':
        weekDayArr.push('二')
        break
      case '3':
        weekDayArr.push('三')
        break
      case '4':
        weekDayArr.push('四')
        break
      case '5':
        weekDayArr.push('五')
        break
      case '6':
        weekDayArr.push('六')
        break
      case '7':
        weekDayArr.push('日')
        break
    }
  }
  return weekDayArr.length > 0 ? '每周' + weekDayArr.join('、') : '-'
}

// code转周几
function getWeekDay (weekCode) {
  let weekDay = ''
  switch (weekCode) {
    case 1:
      weekDay = '周一'
      break
    case 2:
      weekDay = '周二'
      break
    case 3:
      weekDay = '周三'
      break
    case 4:
      weekDay = '周四'
      break
    case 5:
      weekDay = '周五'
      break
    case 6:
      weekDay = '周六'
      break
    case 7:
      weekDay = '周日'
      break
  }
  return weekDay
}

// 深拷贝
function cloneObj (obj) {
  var str, newobj = obj.constructor === Array ? [] : {} // eslint-disable-line
  if (typeof obj !== 'object') {
    return
  } else if (window.JSON) {
    str = JSON.stringify(obj) // 系列化对象
    newobj = JSON.parse(str) // 还原
  } else {
    for (var i in obj) {
      newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i]
    }
  }
  return newobj
}

// 文件的下载
function downloadFile (url, fileName, success) {
  var xhr = new XMLHttpRequest()
  xhr.open('GET', url, true)
  let headers = tools.getHeaders()
  for (let key in headers) {
    xhr.setRequestHeader(key, headers[key])
  }
  xhr.responseType = 'blob'
  xhr.onload = function (event) {
    if (xhr.response.type === 'application/json') {
      success(xhr.response)
    } else {
      var blob = xhr.response
      if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, fileName)
      } else {
        var link = document.createElement('a')
        link.download = fileName
        link.href = window.URL.createObjectURL(blob)
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
      }
    }
  }
  xhr.send()
}

// 参数拼接
function param (json) {
  if (!json) return ''
  return cleanArray(Object.keys(json).map(key => {
    if (json[key] === undefined) return ''
    return encodeURIComponent(key) + '=' +
      encodeURIComponent(json[key])
  })).join('&')
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值