JavaScript 常用的方法

/**
 * @msg 提取url地址参数 转换为对象
 * @param {url : string}
 * @return {object}
 */
function urlParams(url) {
  const params = url.substring(url.indexOf("?") + 1);
  const paramsArr = params.split("&");
  const paramsObj = {};
  paramsArr.forEach((item, key) => {
    paramsObj[item.split("=")[0]] = item.split("=")[1];
  });
  return paramsObj;
}

/**
 * @msg 改变对象键值
 * @param {数组 || 对象  && 指定改变的键值 对象}
 * @return {Boolean}
 */
// changeKey(对象或者数组, {修改前的键值 : "要修改成的键值"})
function changeKey(arr, keyMap) {
  let temString = JSON.stringify(arr);
  for (let key in keyMap) {
    const reg = new RegExp(`"${key}":`, 'g');
    console.log(reg);
    temString = temString.replace(reg, `"${keyMap[key]}":`);
  }
  return JSON.parse(temString);
}
/**
 * @msg // 数组去重
 * @param {arr: Array}
 * @return {function}
 */
function deWeight(arr) {
  return arr.filter((item, index) => arr.indexOf(item) === index);
  // return [...new Set(arr)]; 这种方法也可以 二选一
}
/**
 * @msg 防抖
 * @param {func:function, delay:number , I:}
 * @return {function}
 */
function debouncing(func, delay = 300, I = null) {
  return (...args) => {
    clearTimeout(I);
    I = setTimeout(func.bind(null, ...args), delay);
  };
}
/**
 * @msg // 节流
 * @param {func:function, delay:number}
 * @return {function}
 */
function throttle(func, delay = 300) {
  let lock = false;
  return (...args) => {
    if (lock) {
      return;
    }
    func(...args);
    lock = true;
    setTimeout(() => {
      lock = false;
    }, delay);
  };
}
/**
 * @msg 字符串去重空格的方法
 * @param {字符串 , type 1-前后空格,2-前空格,3-后空格}
 * @return {new 字符串}
 */
//
export function blank(str, type) {
  switch (type) {
    case 1:
      return str.replace(/(^\s*)|(\s*$)/g, '');
    case 2:
      return str.replace(/(^\s*)/g, '');
    case 3:
      return str.replace(/(\s*$)/g, '');
    default:
      return  str.replace(/\s+/g, '');
  }
}
/**
 * @msg // 根据时间,返回当前时间的星期.
 * @param {time:时间戳 || 时间}
 * @return {String || Number}
 */
export function getWeek(time) {
  if (typeof time !== "object" && typeof time !== "number") {
    throw new Error("传入类型不对, 必须是 new Date() 或者 时间戳 (数字类型)");
  }
  try {
    if (typeof time === "number" && time.toString().length === 13)
      return switchingTime(time);
    else if (typeof time === "object" && typeof time.getTime() === "number")
      return switchingTime(time);
  } catch (err) {
    throw new Error(
      `请检查您的传入的参数,必须是 new Date() 或者 时间戳 (数字类型 number)`
    );
  }
}
function switchingTime(time) {
  let timeDate;
  const ENUM = {
    0: "星期日",
    1: "星期一",
    2: "星期二",
    3: "星期三",
    4: "星期四",
    5: "星期五",
    6: "星期六",
  };
  if (typeof time === "number") timeDate = new Date(time);
  else timeDate = time;
  const weekNum = new Date(
    `${timeDate.getMonth() + 1}/${timeDate.getDate()}/${timeDate.getFullYear()}`
  ).getDay();
  return ENUM[weekNum];
}

未完…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值