index.js 2.51 KB
/**
 * @param {Function} fn 防抖函数
 * @param {Number} delay 延迟时间
 */
export function debounce(fn, delay) {
  var timer;
  return function () {
    var context = this;
    var args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

/**
 * @param {date} time 需要转换的时间
 * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
 */
export function formatTime(time, fmt) {
  if (!time) return '';
  else {
    const date = new Date(time);
    const o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'H+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
      'q+': Math.floor((date.getMonth() + 3) / 3),
      S: date.getMilliseconds(),
    };
    if (/(y+)/.test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        (date.getFullYear() + '').substr(4 - RegExp.$1.length)
      );
    for (const 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;
  }
}
/**
 *数组对象去重
 *
 * @export
 * @param {any[]} array 要去重的数组
 * @param {string} key 要去重的对象属性值
 * @return {*}  {any[]}
 */
 export function uniqueArrayObject(array, key) {
  return array.reduce((pre, cur) => {
    const keys = pre.map((item) => item[key])
    return keys.includes(cur[key]) ? pre : [...pre, cur]
  }, [])
}
/**
 *去除数组中的无效值
 *
 * @export
 * @param {any[]} array 要检查的数组
 * @return {*}  []
 */
 export function validArray(array) {
  return array.filter(Boolean)
}
/**
 *
 *是否无效值
 * @param {*} value
 */
export const isVoid = (value) =>
  value === undefined || value === null || value === ''

/**
 *
 *去除对象中的无效值
 * @param {*} object
 * @return {*}
 */
export const validObject = (object) => {
  if (!object) {
    return {}
  }
  const result = { ...object }
  Object.keys(result).forEach((key) => {
    const value = result[key]
    if (isVoid(value)) {
      delete result[key]
    }
  })
  return result
}
/**
 *下划线变量转驼峰
 *
 * @export
 * @param {String} String 要检查的数组
 * @return {String}  String
 */
export function toCamel(str) {
  let newStr = str.replace(/_(\w)/g, (_, c) => (c ? c.toUpperCase() : ''))
  return newStr.endsWith('_') ? newStr.substring(0, newStr.length - 1) : newStr
}