function debounce(func, delay) {
let timer;
return function() {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, arguments);
}, delay);
};}
防抖函数用于延迟执行函数,直到过了一定的间隔时间。
13. 节流函数
function throttle(func, delay) {
let last = 0;
return function() {
const now = Date.now();
if (now - last > delay) {
func.apply(this, arguments);
last = now;
}
};}
节流函数用于限制函数的执行频率,确保它在一定时间内最多只执行一次。
14. 深拷贝对象
function deepClone(obj) {
return JSON.parse(JSON.stringify(obj));}
深拷贝函数用于创建对象的完全独立副本,避免原始对象的修改影响到副本。
15. 排序算法:冒泡排序
function bubbleSort(arr) {
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;}
冒泡排序是一种简单的排序算法,用于将数组中的元素按升序排列。
16. 搜索算法:二分搜索
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;}
二分搜索是一种高效的搜索算法,用于在有序数组中查找特定值的位置。
17. 动画效果:淡入淡出
function fadeIn(element, duration) {
var op = 0;
var timer = setInterval(function() {
if (op >= 1) {
clearInterval(timer);
}
element.style.opacity = op;
element.style.filter = "alpha(opacity=" + op * 100 + ")";
op += 1 / (duration / 10);
}, 10);}
淡入淡出效果可以通过改变元素的透明度来实现平滑的过渡动画。
18. 图片预加载
function preloadImages(images) {
for (var i = 0; i < images.length; i++) {
var img = new Image();
img.src = images[i];
}}