js常用的函数

255 阅读1分钟

格式化货币

该函数将数字四舍五入到两位小数,并且确保有两位小数。

function CurrencyFormatted(amount) {
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

获取url中参数的值

function getQueryString(key) {
	let reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
	let result = window.location.search.substr(1).match(reg);
	return result ? decodeURIComponent(result[2]) : null;
}

深度克隆

/**
 * 简单Object对象的深拷贝:通过递归循环一层层进行调用
 * JSON.parse(JSON.stringify)也可用于深拷贝,但是遇到undefined、function、symbol等会自动忽略
 * concat、slice可以用于单层数组的深拷贝
 *
 * */
function deepClone(source) {
	const targetObj = source.constructor === Array ? [] : {}; //判断复制的对象是数组还是对象
	for (let keys in source) {
		if (source.hasOwnProperty(keys)) {
			if (source[keys] && typeof source[keys] === 'object') { //如果值是对象就递归调用
				targetObj[keys] = source[keys].constructor === Array ? [] : {};
				targetObj[keys] = deepClone(source[keys]);
			} else {
				targetObj[keys] = source[keys];
			}
		}
	}
	return targetObj;
}