/**
* @name: 钱保留两位小数 不足补0
* @param {String | Number} value 要处理的数据
* @param {Number} tofixed 保留几位小数
* @return {*}
*/
export const toDecimal = (value) => {
const num = parseFloat(value);
if (isNaN(num)) return;
let rn = (parseInt(num * 100) / 100).toString();
let rs = rn.indexOf('.');
if (rs < 0) {
rs = rn.length;
rn += '.';
}
while (rn.length <= rs + 2) {
rn += '0';
}
return rn;
};
/**
* @name: 获取地址栏参数
* @param {string} name 需要获取的参数
* @return {*}
*/
export const GetQueryString = (name) => {
let reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i');
let r = location.search.substr(1).match(reg);
if (r != null) return unescape(decodeURI(r[2]));
return null;
};
/**
* @name: 日期格式化
* @param {Date} objDate 'new Date()'
* @param {string} fmt 'yyyy-MM-dd HH:mm:ss'(传入的格式)
* @return {*}
*/
export const formatDate = (objDate, fmt) => {
const o = {
'M+': objDate.getMonth() + 1, // 月份
'd+': objDate.getDate(), // 日
'h+': objDate.getHours() % 12 === 0 ? 12 : objDate.getHours() % 12, // 小时
'H+': objDate.getHours(), // 小时
'm+': objDate.getMinutes(), // 分
's+': objDate.getSeconds(), // 秒
'q+': Math.floor((objDate.getMonth() + 3) / 3), // 季度
'S': objDate.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
`${objDate.getFullYear()}`.substr(4 - RegExp.$1.length)
);
}
Object.keys(o).forEach((k) => {
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;
};
/**
* 判断此对象是否是Object类型
* @param {Object} obj
*/
export const isObject = (obj) => {
return Object.prototype.toString.call(obj) === '[object Object]';
};
/**
* 深度比较两个对象是否相同
* @param {Object} oldData
* @param {Object} newData
*/
export const equalsObj = (oldData, newData) => {
// 类型为基本类型时,如果相同,则返回true
if (oldData === newData) return true;
if (isObject(oldData) && isObject(newData) && Object.keys(oldData).length === Object.keys(newData).length) {
// 类型为对象并且元素个数相同
// 遍历所有对象中所有属性,判断元素是否相同
for (const key in oldData) {
if (oldData.hasOwnProperty(key)) {
if (!equalsObj(oldData[key], newData[key]))
// 对象中具有不相同属性 返回false
return false;
}
}
} else if (Array.isArray(oldData) && Array.isArray(oldData) && oldData.length === newData.length) {
// 类型为数组并且数组长度相同
for (let i = 0, length = oldData.length; i < length; i++) {
if (!equalsObj(oldData[i], newData[i]))
// 如果数组元素中具有不相同元素,返回false
return false;
}
} else {
// 其它类型,均返回false
return false;
}
// 走到这里,说明数组或者对象中所有元素都相同,返回true
return true;
}
js常用方法utils
最新推荐文章于 2024-08-08 15:22:10 发布