记录工作中可能用到的一些常用的工具函数,作一个备忘录。
持续更新…

判断是否移动端

const isMobile = () => {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

时间格式化

const parseTime = (time, pattern = 'YYYY-MM-DD HH:mm:ss') => {
  if (arguments.length === 0 || !time) return time;

  let date;
  if (typeof time === 'object') {
    date = time;
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time);
    } else if (typeof time === 'string') {
      time = time.replace(new RegExp(/-/gm), '/');
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000;
    }
    date = new Date(time);
  }

  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }

  return pattern.replace(/(YYYY|MM|DD|HH|mm|ss|a)+/g, (result, key) => {
    let value = formatObj[key];
    if (key === 'a') return ['日', '一', '二', '三', '四', '五', '六'][value];
    if (result.length > 0 && value < 10) {
      value = '0' + value;
    }
    return value || 0;
  });
}

数组扁平化

const flatten = (data, depth = Infinity) => {
  return data.reduce((a, v) =>
    a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v)
  , []);
}

检查对象是否为空

const isEmptyObj = obj => {
  return obj.constructor === Object && Object.keys(obj).length === 0;
}

计算日期天数差

const diffDays = (start, end) => {
  cosnt checkArg = arg => Object.prototype.toString.apply(arg) === '[object Date]'
  if(!checkArg(start) || !checkArg(end)) return NaN;

  const day = 24 * 60 * 60 * 1000;
  return Math.ceil(Math.abs(start.getTime() - end.getTime()) / day);
}

查询某天是否为工作日

const isWeekDay = date => {
  cosnt checkArg = arg => Object.prototype.toString.apply(arg) === '[object Date]'
  return checkArg(date) ? date.getDay() % 6 !== 0 : undefined ;
}

金额千分位

const formatMoney = money => {
  const [integer, decimal] = String(money).split('.');
  return integer.replace(/\B(?=(\d{3})+$)/g, ',') + '.' + decimal;
}

获取 url 中的 query 并格式化成对象

const getParameters = url => {
  const _url = url.split("?");
  return _url.length > 1 && _url[1].length
    ? JSON.parse(
    `{"${decodeURI(_url[1] || '')
      .replace(/"/g, '\\"')
      .replace(/&/g, '","')
      .replace(/=/g, '":"')
    }"}`)
    : {}
}