- 66浏览
- 2022-07-01
1.判断变量是否是空值(null、undefined、空字符串):
function isEmpty(variable) {
return variable === null || variable === undefined || variable === '';
}
2.判断变量的类型:
function getType(variable) {
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
}
3.防抖函数(在函数触发一段时间后再执行,若在此期间再次触发,则重新计时):
function debounce(fn, delay) {
let timer;
return function (...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
}
4.节流函数(设定一段时间间隔,在此期间内函数只执行一次):
function throttle(fn, delay) {
let timer;
return function (...args) {
if (!timer) {
timer = setTimeout(() => {
fn.apply(this, args);
timer = null;
}, delay);
}
};
}
5.字符串截取(可保留省略号):
function truncate(str, len, omission = '...') {
if (str.length <= len) return str;
return str.slice(0, len - omission.length) + omission;
}
数组去重:
function unique(array) {
const result = [];
for (let i = 0; i < array.length; i++) {
if (result.indexOf(array[i]) === -1) result.push(array[i]);
}
return result;
}
7.数组扁平化:
function flatten(array) {
return array.reduce((prev, curr) => {
return prev.concat(Array.isArray(curr) ? flatten(curr) : curr);
}, []);
}
8.对象属性排序:
function sortObjectProps(obj) {
const keys = Object.keys(obj).sort((a, b) => a.localeCompare(b));
const result = {};
keys.forEach(key => (result[key] = obj[key]));
return result;
}
9.获取浏览器滚动条的宽度:
function getScrollbarWidth() {
const outer = document.createElement('div');
outer.style.visibility = 'hidden';
outer.style.overflow = 'scroll';
outer.style.msOverflowStyle = 'scrollbar';
document.body.appendChild(outer);
const inner = document.createElement('div');
outer.appendChild(inner);
const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);
outer.parentNode.removeChild(outer);
return scrollbarWidth;
}
10.深拷贝对象:
function deepClone(obj) {
const type = getType(obj);
if (type === 'object') {
const cloneObj = {};
for (let key in obj) {
cloneObj[key] = deepClone(obj[key]);
}
return cloneObj;
} else if (type === 'array') {
const cloneArr = [];
obj.forEach(item => {
cloneArr.push(deepClone(item));
});
return cloneArr;
} else {
return obj;
}
}
以上仅是一些常用的工具方法封装,实现方式会因人而异,欢迎参考修改。版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。