返回
JS 三分钟之 JS 常用代码段(三)
前端
2023-11-18 13:51:10
1. 日期格式化成字符串
Date.prototype.format = function(format) {
const date = this;
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
const seconds = date.getSeconds();
// 填充0
const padZero = (num) => (num < 10 ? `0${num}` : num);
// 将日期格式化成字符串
return format
.replace(/yyyy/, year)
.replace(/MM/, padZero(month))
.replace(/dd/, padZero(day))
.replace(/HH/, padZero(hours))
.replace(/mm/, padZero(minutes))
.replace(/ss/, padZero(seconds));
};
2. 过滤日期标识符
const filterDateIdentifiers = (f) => {
return f.replace(/[a-zA-Z]/g, '');
};
3. 数组去重
const uniqueArray = (arr) => {
return [...new Set(arr)];
};
4. 数组最大值和最小值
const arrayMinMax = (arr) => {
return {
max: Math.max(...arr),
min: Math.min(...arr),
};
};
5. 对象深拷贝
const deepCopy = (obj) => {
return JSON.parse(JSON.stringify(obj));
};
6. 对象转 URL 参数
const objectToUrlParams = (obj) => {
return Object.keys(obj).map((key) => `${key}=${obj[key]}`).join('&');
};
7. URL 参数转对象
const urlParamsToObject = (url) => {
const params = {};
const query = url.split('?')[1];
const pairs = query.split('&');
pairs.forEach((pair) => {
const [key, value] = pair.split('=');
params[key] = value;
});
return params;
};
8. 函数防抖
const debounce = (func, delay) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, delay);
};
};
9. 函数节流
const throttle = (func, delay) => {
let last = 0;
return (...args) => {
const now = Date.now();
if (now - last < delay) {
return;
}
last = now;
func.apply(this, args);
};
};
10. 验证邮箱格式
const isValidEmail = (email) => {
const regex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return regex.test(email);
};
11. 判断是否为质数
const isPrime = (num) => {
if (num <= 1) {
return false;
}
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return true;
};
12. 获取随机数
const getRandomInt = (min, max) => {
return Math.floor(Math.random() * (max - min + 1) + min);
};
13. 获取随机字符串
const getRandomString = (length) => {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
};
14. DOM 操作 - 添加 class
const addClass = (element, className) => {
element.classList.add(className);
};
15. DOM 操作 - 移除 class
const removeClass = (element, className) => {
element.classList.remove(className);
};
16. DOM 操作 - 获取元素
const getElement = (selector) => {
return document.querySelector(selector);
};
17. DOM 操作 - 创建元素
const createElement = (element) => {
return document.createElement(element);
};
18. DOM 操作 - 插入元素
const insertElement = (parent, child) => {
parent.appendChild(child);
};
19. DOM 操作 - 移除元素
const removeElement = (element) => {
element.parentNode.removeChild(element);
};
20. AJAX 请求
const ajax = (url, method, data) => {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.responseText);
} else {
reject(xhr.statusText);
}
};
xhr.onerror = () => {
reject(xhr.statusText);
};
xhr.send(data);
});
};
以上便是 20 个常用的 JavaScript 代码段,它们涵盖了从日期格式化到数组操作再到对象处理等各个方面,相信能够帮助你轻松应对各种开发场景,提升开发效率。