常用工具包

这篇博客探讨了JavaScript中的一些实用函数,包括生成指定范围内的随机数、实现深拷贝以复制复杂对象、将多维数组转化为一维数组以及两种版本的本地存储实现。此外,还介绍了防抖和柯里化技术,用于优化函数调用和创建可定制的函数。这些函数对于提升JavaScript应用的效率和灵活性至关重要。
摘要由CSDN通过智能技术生成

//获取随机数
function getRandomNum(min, max) {
min = min == “” ? 0 : min;
max = max == “” ? 0 : max;
if (!isNaN(min) && !isNaN(max)) {
//最小值大于最大值
min > max ? [min, max] = [max, min] : “”;
return parseInt((max - min + 1) * Math.random() + min);
}
}

//深拷贝
function deepCopy(oldData, newData = []) {
for (let index in oldData) {
if (typeof oldData[index] == “object” && oldData[index] != null) {
newData[index] = oldData[index] instanceof Array ? [] : {};
newData[index] = deepCopy(oldData[index], newData[index]);
} else {
newData[index] = oldData[index];
}
}
return newData;
}

//多维数组转一维数组
function changArr(oldData, newData = []) {
oldData.forEach((item, index) => {
item instanceof Array ?
changArr(item, newData) :
newData.push(item)
});
return newData;
}

//本地存储v1.0
function setSession(key, data) {
let str = JSON.stringify(data);
sessionStorage.setItem(key, str);
};

function getSession(key) {
let data = sessionStorage.getItem(key);
return JSON.parse(data);
}
//本地存储v2.0
let setSession1 = (key, data) => sessionStorage.setItem(key, JSON.stringify(data));
let getSession1 = (key) => JSON.parse(sessionStorage.getItem(key));

//防抖(fn需要做的业务功能,waitTime防抖的时间)
function debounce(fn, waitTime) {
let timer = “”;
return function(num) {
if (timer) {
clearInterval(timer);
}
timer = setTimeout(function() {
fn(num);
}, waitTime);
}
}

//柯里化
//fn是要执行业务的函数
//fn的执行条件:
//当传入的实参个数大于等于fn的形参个数,则执行fn
function curry(fn, …arg1) {
return function(…arg2) {
let argAll = […arg1, …arg2];
if (argAll.length >= fn.length) { //实参数是否满足形参个数
fn(…argAll);
} else {
curry(fn, …argAll);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值