js工具函数

提示:记录工作中遇到的需求及解决办法


前言

在工作中我们经常需要对数据进行一些处理,所以我们会使用自定义函数来处理数据,于是可以封装成工具函数重复使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、用于格式化数字成为货币形式,即添加逗号作为千位分隔符,并保留两位小数。

/**
 * 用于格式化数字成为货币形式,即添加逗号作为千位分隔符,并保留 指定 位小数。
 * @param {*} cost  待格式化的数字
 * @param {*} precis  保留的小数位数(默认为2)
 * @returns
*/
function moneyFilter (cost, precis = 2) {
   
  var money = Number(cost).toFixed(precis).split(".");
  money[0] = money[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  return money.join(".");
}

二、获取xxxx-xx-xx 或 xxxx-xx-xx xx:xx:xx 时间

/**
 * 获取xxxx-xx-xx、xxxx-xx-xx xx:xx:xx
 * @param {Number} data
 * @param {Boolean} flag 是否需要 时:分:秒
 * @returns 
 */
getFormatDate (data, flag = false) {
   
  const date = data ? new Date(data) : new Date()
  var year = date.getFullYear()
  var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
  var hours = ("0" + date.getHours()).slice(-2);
  var minutes = ("0" + date.getMinutes()).slice(-2);
  var seconds = ("0" + date.getSeconds()).slice(-2);
  let nowDa = year + "-" + month + "-" + day + " ";
  if (flag) {
   
    nowDa += ' ' + hours + ":" + minutes + ":" + seconds;
  }
  return nowDa
}

三、将对象中字段名替换为新的名称。

/**
 * 将对象中字段名替换为新的名称。
 * @param {*} data 目标对象数据源
 * @param {*} fieldNames 需要替换的字段对象
 * @returns
 */
changeFieldNames (data, fieldNames) {
   
  if (Array.isArray(data)) {
   
    return data.map((item) => this.changeFieldNames(item, fieldNames));
  } else if (typeof data === "object") {
   
    const newData = {
   };
    for (let key in data) {
   
      if (fieldNames.hasOwnProperty(key)) {
   
        newData[fieldNames[key]] = this.changeFieldNames(
          data[key],
          fieldNames
        );
      } else {
   
        newData[key] = this.changeFieldNames(data[key], fieldNames);
      }
    }
    return newData;
  } else {
   
    return data;
  }
}

例:

这是一个简单的例子,说明如何使用这个函数:

const originalData = {
   
  oldName1: 'value1',
  oldName2: {
   
    subOldName1: 'subValue1',
    subOldName2: 'subValue2'
  },
  oldName3: ['item1', 'item2']
};

const fieldNames = {
   
  oldName1: 'newName1',
  oldName2: 'newName2',
  oldName3: 'newName3',
  subOldName1: 'subNewName1',
  subOldName2: 'subNewName2'
};

const transformedData = changeFieldNames(originalData, fieldNames);

console.log(transformedData);

输出将是:

{
   
  newName1: 'value1',
  newName2: {
   
    subNewName1: 'subValue1',
    subNewName2: 'subValue2'
  },
  newName3: ['item1', 'item2']
}

请注意,这个函数假设 fieldNames 对象包含所有需要替换的旧字段名,并且它们的值是新字段名。如果原始数据中存在 fieldNames 对象中没有的字段,这个函数将保留原始字段名。

四、从URL中提取查询参数并返回一个对象。

这个函数的目的是解析URL中的查询字符串(即URL中问号(?)后面的部分),并将每个查询参数转换为键值对的形式。

/**
 * 从URL中提取查询参数并返回一个对象。
 * @param {string} url 
 * @returns {Object}
 */
getQueryObject (url) {
   
  url = url == null ? window.location.href : url
  const search = url.substring(url.lastIndexOf('?') + 1)
  const obj = {
   }
  const reg = /([^?&=]+)=([^?&=]*)/g
  search.replace(reg, (rs, $1, $2) => {
   
    const name = decodeURIComponent
  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿超学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值