1.深层合并对象(深拷贝)
function deepMerge(obj1, obj2) {
var key;
for(key in obj2) {
// 如果target(也就是obj1[key])存在,且是对象的话再去调用deepMerge,否则就是obj1[key]里面没这个对象,需要与obj2[key]合并
obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
this.deepMerge(obj1[key], obj2[key]) : obj1[key] = obj2[key];
}
return obj1;
}
2.最大最小值
Array.prototype.max = function(){
return Math.max.apply({},this)
}
Array.prototype.min = function(){
return Math.min.apply({},this)
}
[1,2,3].max() //3
[1,2,3].min() //1
3.时间戳转日期格式
function formatDate(date) {
var date = new Date(date);
var YY = date.getFullYear() + '-';
var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
return YY + MM + DD +" "+hh + mm + ss;
}
formatDate(20001003)//1970-01-01 13:33:21
4.防抖动函数
/**
* 防抖动函数
* @param {*} func 要执行的函数
* @param {*} wait 规定函数至少间隔多久执行
*/
function debounce(func, wait) {
let timeout //定义变量
return function () {
clearTimeout(timeout) //每次触发时先清除上一次的定时器,然后重新计时
timeout = setTimeout(() => {
func.apply(this, arguments)
}, wait) //指定xx ms后触发真正想要进行的操作
}
}
function func(){
console.log('执行')
}
func = debounce(func, 1000)
5.获取文本字节长度
/**
* 获取文本字节长度
* @param {String} val 字符串
*/
function getByteSize(val) {
var bytesCount = 0
if (val && val.length > 0) {
var str = new String(val)
for (var i = 0, n = str.length; i < n; i++) {
var c = str.charCodeAt(i)
if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
bytesCount += 1
} else {
bytesCount += 2
}
}
}
return bytesCount
}