个人高频常用的一些js方法

-------------------

判断字段是否为空(0,false除外)

/**
   * 判断字段是否为空(0,false除外)
   * @param v 要判断的模目标值
   * @returns true | false
   */
  isFieldEmpty(v) {
    const strV = JSON.stringify(v);
    return (
      v == undefined ||
      v === '' ||
      (v.trim && v.trim() === '') ||
      strV === '{}' ||
      strV === '[]'
    );
  },

去除对象中空字段(0和false除外)

  /**
   * 去除对象中空字段(0和false除外)
   * @param obj 要判断的目标对象
   * @returns 去除空值后的对象
   */
  removeEmptyField(obj = {}) {
    const type = this.getPropertyType(obj);
    if (type === 'Object') {
      const result = JSON.parse(JSON.stringify(obj));
      for (const key in result) {
        if (Object.prototype.hasOwnProperty.call(result, key)) {
          const element = result[key];

          if (this.getPropertyType(element) === 'String') {
            // 字符串前后去空
            result[key] = element.trim && element.trim();
          }
          if (this.isFieldEmpty(result[key])) {
            delete result[key];
          }
        }
      }
      return result;
    }
    return obj;
  },

获取 url query 中的具体参数值

getUrlParam(paramName) {
    // eslint-disable-next-line react-hooks/rules-of-hooks
    const searchParams = new URLSearchParams(useLocation().search);
    if (Array.isArray(paramName)) {
      return paramName.map(i => {
        const v = searchParams.get(i);
        if (
          v &&
          `${v}`.toLocaleLowerCase() !== 'undefined' &&
          `${v}`.toLocaleLowerCase() !== 'null'
        ) {
          return v;
        }
        return '';
      });
    }
    const v = searchParams.get(paramName);
    if (
      v &&
      `${v}`.toLocaleLowerCase() !== 'undefined' &&
      `${v}`.toLocaleLowerCase() !== 'null'
    ) {
      return v;
    }
    return '';
  },

js对象转换成url地址参数格式。

  objectToQuery(...args) {
    const obj = args[0];
    const prefix = args[1];
    if (typeof obj !== 'object') return '';
    const attrs = Object.keys(obj);
    return attrs.reduce((query, attr, index) => {
      // 判断是否是第一层第一个循环
      if (index === 0 && !prefix) query += '?';
      if (typeof obj[attr] === 'object') {
        const subPrefix = prefix ? `${prefix}[${attr}]` : attr;
        query += this.objectToQuery(obj[attr], subPrefix);
      } else if (prefix) {
        query += `${prefix}[${attr}]=${obj[attr]}`;
      } else {
        query += `${attr}=${obj[attr]}`;
      }
      // 判断是否是第一层最后一个循环
      if (index !== attrs.length - 1) query += '&';
      return query;
    }, '');
  },

乘法函数,用来得到精确的乘法结果

  // 乘法函数,用来得到精确的乘法结果
  // 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
  // 调用:accMul(arg1,arg2)
  // 返回值:arg1乘以arg2的精确结果
  accMul(arg1, arg2) {
    let m = 0;
    const s1 = arg1.toString();
    const s2 = arg2.toString();
    try {
      m += s1.split('.')[1].length;
    } catch (e) {
      // console.log(e);
    }
    try {
      m += s2.split('.')[1].length;
    } catch (e) {
      // console.log(e);
    }
    return (
      (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) /
      Math.pow(10, m)
    );
  },

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值