常用的util方法

防抖

// 防抖
export function debounce(func, delay) {
  let timer
  return function (...args) {
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      func.apply(this, args)
    }, delay)
  }
}

节流 

// 节流
export function throttle(fn, delay) {
  let previous = 0;
  // 使用闭包返回一个函数并且用到闭包函数外面的变量previous
  return function() {
      let args = arguments;
      let now = new Date();
      if(now - previous > delay) {
          fn.apply(this, args);
          previous = now;
      }
  }
}

图片转base64

 // 转base64
 export function fileToBase64(filePath){
  return new Promise((resolve) => {
    let fileManager = Taro.getFileSystemManager();
    fileManager.readFile({
      filePath,
      encoding: 'base64',
      success: (e) => {
        resolve(e.data);
      }
    });
  });
 }

获取地址栏参数

 export function GetRequest(url){
	let theRequest={}
	if(url.indexOf("?")!=-1){
		const str=url.split('?')[1];
    theRequest.url =url.split('?')[0];
		const strs=str.split("&");
    strs.forEach(item=>{
       theRequest[item.split("=")[0]]= item.split("=")[1]
      })
  }
	return theRequest;
}

时间格式转换

export const formatTime = (date, format) => {
  console.log(date);
  const year = date.getFullYear( )
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  switch (format) {
    case 'YYYY-MM-dd HH:mm:ss':
      return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
    case 'YYYY-MM-dd':
      return [year, month, day].map(formatNumber).join('-')
    case 'YYYY.MM.dd HH:mm':
      return [year, month, day].map(formatNumber).join('.') + ' ' + [hour, minute].map(formatNumber).join(':')
  }
}
const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

 储存信息

/**
 * 储存信息
 * @param {*} key
 * @param {*} data
 */
export function setStorage(key, data) {
  const value = JSON.stringify(data);
  try {
    Taro.setStorageSync(key, value)
  } catch (e) {

  }
}

获取储存信息

/**
 * 获取储存信息
 * @param {*} key
 * @returns
 */
export function getStorage(key) {

  try {
    var value = Taro.getStorageSync(key)
    if (value) {
      return JSON.parse(value)
    }
  } catch (e) {
    console.log(e)
  }
}

复制文本

/**
 * 复制文本
 * @param {*} data
 */
export function copyText(data) {
  Taro.setClipboardData({
    data: data,
    success: function (res) {
      console.log(res);
      Taro.showToast({
        title: '已复制',
        icon: 'success',
        duration: 2000
      })
      // Taro.getClipboardData({
      //   success: function (res) {
      //     console.log(res.data) // data
      //   }
      // })
    }
  })
}

获取高亮字符串

// 获取高亮状态的字符串
export const getHighLightArr = (str, content) => {
  if (content == null) {
    return ''
  }
  let i = content.indexOf(str)
  if (str.length == 0 || content.length == 0 || i == -1) {
    return ['', '', content]
  }
  if (i == 0) {
    return ['', str, content.slice(str.length)]
  } else if (i == content.length - 1 - str.length) {
    return [content.slice(0, content.length - str.length - 1), str, content.slice(i + str.length)]
  } else {
    return [content.slice(0, i), str, content.slice(i + str.length)]
  }
}
export const replaceHttp = (url) => {
  if (url == '' || url == null) {
    return ''
  }
  let newUrl = url.replace('http://', 'https://')
  return newUrl
}

// 过滤枚举

// 过滤枚举
export const findName = (datalist, data) => {
  if (data === null || undefined) {
    return '- / -'
  }
  if (datalist && datalist.length > 0) {
    const filterData = datalist.filter((value) => value.code === Number(data))
    if (filterData && filterData.length > 0) {
      return filterData[0]
    } else {
      return '- / -'
    }
  } else {
    return null
  }
}
// 数组去重
const uniqueArray = arr => [...new Set(arr)];

// 从url获取参数,并且转换成对象
const getParameters = URL => JSON.parse(`{"${decodeURI(URL.split("?")[1]).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"')}"}`)

//检查对象是否为空
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object
//检查是否为对象
const isObject = obj => !(Object.keys(obj).length === 0)

//字符串反转
const reverseString = str => str.split('').reverse().join('')

//随机生成十六进制颜色值
const randomHexColor = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0')}`

//检查当前选项卡是否在后台
const isTabActive = () => !document.hidden;

//检查元素是否处于焦点
const eleIsInFocus = el => (el.document.activeElement)

//检查设备类型
const judgeDeviceType = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|OperaMini/i.test(navigator.userAgent) ? 'Mobile' : 'PC';

//文字复制到剪切板
const copyText = async text => await navigator.clipboard.writeText(text)

// 返回选中的内容
const getSelectedText = () => window.getSelection().toString();

//查询某天是否为工作日
const isWeekday = (date) => date.getDay() % 6 !== 0;

//两日期之间相差的天数
const dayDiff = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000);

//检查日期是否有效
const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());

// 计算两个日期之间的间隔
const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)

//查找日期位于一年中的第几天
const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);

//时间格式化
const timeFromDate = date => date.toTimeString().slice(0, 8);

//字符串首字母大小
const firstUpper = str => str.charAt(0).toUpperCase() + str.slice(1);

//随机字符串
const randomString = () => Math.random().toString(36).slice(2)

//去除字符串中的html
const striphtml = html => html(new DOMParser().parseFromString(html, 'text/html').body.textContent || '')

//判断数组是否为空
const isNotEmpty = array => Array.isArray(array) && array.length > 0

//合并两个数组
const merge = (a, b) => a.concat(b)
const mergeArr = (a, b) => [...a, ...b]

//获取一组数据的平均值
const average = (...args) => args.reduce((a, b) => a + b) / args.length

//取两个整数之间的随机值
const randomNumber = (min, max) => Math.floor(Math.random() * (max - min + 1) + min)

//指定位数的四舍五入
const roundNumber = (n, d) => Number(Math.round(n + "e" + d) + 'e-' + d)

//将RGB转化为十六机制
const rgbaToHex = (r, g, b, a) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)

//清除所以cookie
const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));

//检测是否是黑暗模式
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches

//滚动到顶部
const goToTop = () => window.screenTop(0, 0)

//判断是否滚动到底部
const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight;

//重定向到一个url
const redirectToUrl = (url) => window.location.href = url

//打开浏览器的打印页面
const showPrintDialog = () => window.print()

//随机布尔值
const randomBoolean = () => Math.random() >= 0.5

//变量交换
let a = 1, b = 2;
[a, b] = [b, a]

//获取变量的类型
const trueTypeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值