国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

25 個 JavaScript 實用函數,我會復制粘貼到每個項目中(必備)

開發 前端
與其每次都從頭開始編寫這些實用工具,不如整理一下這個包含 25 個可復用的 JavaScript 函數的小集合,我幾乎會把它們復制粘貼到每個項目中。

從 debounce 到 deepClone——你的 JS 瑞士軍刀。

你也經歷過那種感覺吧:當你深入一個項目,突然需要對某個函數進行 debounce 處理、限制某個滾動事件,或者安全地訪問一個嵌套對象。

沒錯,我也是。

所以,與其每次都從頭開始編寫這些實用工具,不如整理一下這個包含 25 個可復用的 JavaScript 函數的小集合,我幾乎會把它們復制粘貼到每個項目中。

它們簡短、精煉,而且非常實用。嘿,如果你正在用 React、Vue、Angular、Vanilla JS 構建任何東西,或者甚至用記事本(別覺得丟人)抄 HTML(這可不是鬧著玩的),這些函數都能幫你節省時間。

我們開始吧。

1. Debounce

function debounce(fn, delay = 300) {  
let timeout;  
return (...args) => {    
clearTimeout(timeout);    
timeout = setTimeout(() => fn(...args), delay);  
};
}

非常適合搜索輸入和調整大小事件,給你的函數留出一些喘息的空間。

2. 節流閥

function throttle(fn, limit = 300) {  
let inThrottle;  return (...args) => {    
if (!inThrottle) {      
fn(...args);      
inThrottle = true;      
setTimeout(() => (inThrottle = false), limit);    
}  
};
}

因為每次滾動像素觸發 = 瀏覽器崩潰。

3. 深度克隆

function deepClone(obj) {  
return JSON.parse(JSON.stringify(obj));
}

它并不完美(函數可能會丟失),但 90% 的情況下都能正常工作。

4. 復制到剪貼板

像老板一樣粘貼,適用于現代瀏覽器。

function copyToClipboard(text) {  
navigator.clipboard.writeText(text).catch(console.error);
}

5. Sleep

用于延遲動畫或模擬異步加載。

function sleep(ms) {  
return new Promise(resolve => setTimeout(resolve, ms));
}

6. Clamp

控制值——例如滾動位置或輸入限制。

function clamp(value, min, max) {  
return Math.min(Math.max(value, min), max);
}

7. Object

因為 typeof null === 'object' 是 JavaScript 版的惡意代碼。

function isObject(val) {  
return val && typeof val === 'object' && !Array.isArray(val);
}

8. Empty

當 if (obj) 無法滿足需求時。

function isEmpty(obj) {  
return Object.keys(obj).length === 0;
}

9. UUID 生成器

即時唯一 ID——無需 npm i uuid。

function uuid() { 
 return crypto.randomUUID();
 }

10. Once

有時候,一次就夠了。想想:事件監聽器、API 調用、煙火表演。

function once(fn) {  
let called = false;  return (...args) => {    
if (!called) {      
called = true;      fn(...args);    
}  
};
}

11. 獲取查詢參數

是的,?page=2&sort=desc 需要解碼。

function getQueryParams() {  
return Object.fromEntries(new URLSearchParams(location.search));
}

12. 范圍生成器

因為 for 循環現在已經過時了。

function range(start, end, step = 1) {  
return Array.from({ length: (end - start) / step + 1 }, (_, i) => start + i * step);
}

 13. 移除重復項

不再需要復雜的過濾操作。讓 Set 自行處理。

function unique(arr) {
  return [...new Set(arr)];
  }

14. 安全訪問 (get)

深度訪問,不會導致應用崩潰。類似 Lodash 的 get(),但更精簡。

function get(obj, path, fallback = undefined) {  
return path.split('.').reduce((acc, key) => acc?.[key], obj) ?? fallback;
}

15. 分組

根據公共屬性對項目列表進行分組。即時分析的魔法。

function groupBy(arr, key) {  
return arr.reduce((acc, obj) => {    
const val = obj[key];    
acc[val] = acc[val] || [];    
acc[val].push(obj);    
return acc;  
}, {});
}

16. 移除空值

清除 null、undefined、0 和 "" 等虛假值。

function compact(arr) {  
return arr.filter(Boolean);
}

17. Time Ago

即時“5 分鐘前發布”的魔法。

function timeAgo(date) {  
const seconds = Math.floor((Date.now() - new Date(date)) / 1000);
  const units = [    
  [60, 'second'],    
  [60, 'minute'],    
  [24, 'hour'],    
  [7, 'day'],    
  [4.3, 'week'],    
  [12, 'month'],    
  [Number.POSITIVE_INFINITY, 'year']  
  ];
let i = 0;  
  while (seconds >= units[i][0]) {    
  seconds /= units[i][0];    
  i++;  
  }  
  const value = Math.floor(seconds);  
  const label = units[i][1];  
  return `${value} ${label}${value !== 1 ? 's' : ''} ago`;
  }

 18. isEqual(淺)

非常適合快速比較(但不適用于大型嵌套對象)。

function isEqual(a, b) {  
return JSON.stringify(a) === JSON.stringify(b);
}

19. 隨機排序

給你的 UI 或測驗應用增添一點混亂。

function shuffle(arr) {  
return arr.sort(() => Math.random() - 0.5);
}

 20. 格式化貨幣

因為 $123456.789 看起來應該寫成 $123,456.79 更好。

function formatCurrency(amount, locale = 'en-US', currency = 'USD') {  
return new Intl.NumberFormat(locale, {    
style: 'currency',    
currency,  }).format(amount);
}

 21. 扁平化數組

將 [1, [2, [3]]] 轉換為 [1, 2, 3] —— 遞歸,誰用得著?

function flatten(arr) { 
 return arr.flat(Infinity);
 }

22. isBrowser

用于服務器端渲染設置并避免出現 window is not definition 錯誤。

function isBrowser() {  
return typeof window !== 'undefined';
}

 23. 大寫

將 hello 轉換為 Hello,就像一個普通的字符串一樣。

function capitalize(str) {  
return str.charAt(0).toUpperCase() + str.slice(1);
}

 24. 分塊數組

將大數組拆分成易于理解的小塊。

function chunk(arr, size) {  
return Array.from({ length: Math.ceil(arr.length / size) }, (_, i) =>    
arr.slice(i * size, i * size + size) 
);
}

25. 深度合并

類似 Object.assign,但更偏向遞歸。

function mergeDeep(target, source) {  
for (const key in source) {    
if (isObject(source[key])) {      
if (!target[key]) Object.assign(target, { [key]: {} });      
mergeDeep(target[key], source[key]);    
} else {
      Object.assign(target, { [key]: source[key] });    
      } 
       }  return target;
       }

 總結

以上就是我今天想與你分享的25 個我幾乎離不開的 JavaScript 實用函數。

復制粘貼它們,修改它們,如果需要的話,把它們刻在你的鍵盤上。

如果你有我遺漏的殺手級函數,請在評論區留言告訴我們,也讓更多人知道它們。

最后,感謝您的閱讀,祝編程愉快。

責任編輯:龐桂玉 來源: web前端開發
相關推薦

2025-04-18 10:14:29

2021-09-03 10:08:53

JavaScript開發 代碼

2022-09-02 14:37:46

復制粘貼Pythonexe

2012-07-03 15:04:22

程序員

2018-07-03 13:17:00

2011-08-31 13:43:10

windows8

2020-10-17 09:03:06

使用JS創建復制&粘貼

2023-06-27 07:55:03

前端開發工具

2025-02-03 00:00:00

Vue.js組件緩存

2019-07-12 14:00:55

xclipLinux命令行

2020-10-29 15:17:49

代碼開發工具

2023-09-26 07:39:21

2020-04-15 10:01:14

Web工具前端

2021-10-29 11:05:34

JavaScript代碼字符串

2020-08-27 19:30:39

Chrome瀏覽器

2023-02-09 09:07:49

2020-12-15 06:02:19

瀏覽器Edge智能粘貼

2018-03-23 10:15:28

Windows 10云剪貼板復制粘貼

2021-08-29 07:43:43

CopyQ操作系統微軟

2021-02-22 09:23:04

Windows10 操作系統21H2
點贊
收藏

51CTO技術棧公眾號

7777精品伊人久久久大香线蕉| 这里只有精品电影| 日韩欧美在线观看强乱免费| 粉嫩一区二区三区四区公司1| 日韩一区二区视频| 桃花色综合影院| 亚洲激情校园春色| 国产h视频在线播放| 激情综合网天天干| 日本一区二区高清视频| 国内精品久久久久久久影视蜜臀| 国产精品成人一区二区| 9l视频自拍蝌蚪9l视频成人| 久久天天躁日日躁| 亚洲天堂男人天堂女人天堂| 狠狠色伊人亚洲综合网站l| 亚洲激情五月婷婷| 免费特级黄毛片| 亚洲欧美国产高清| www.99色.com| 中文字幕日韩av资源站| 久久久久久三级| 国产日产精品1区| 黄色国产小视频| 国产精品久久久久三级| 男捅女免费视频| 色94色欧美sute亚洲线路一久| 黄色漫画在线免费看| 色婷婷av一区二区三区大白胸| 国产激情二区| 日韩欧美亚洲国产精品字幕久久久| 美女福利视频在线| 国产二区视频在线播放| 国产在线精品不卡| 在线播放国产一区二区三区| 2001个疯子在线观看| 正在播放亚洲一区| 在线heyzo| 日韩欧美在线观看一区二区三区| 亚洲精品天堂| 亚洲成人精品视频| 鲁一鲁一鲁一鲁一色| 国内久久精品视频| 日韩欧美猛交xxxxx无码| 国产黑丝在线一区二区三区| 久久久免费观看视频| 国产福利亚洲| 北条麻妃99精品青青久久| 亚洲伦理一区二区| 欧美激情在线狂野欧美精品| 亚洲理论电影| 成人福利视频网| 亚洲另类自拍| 亚洲高清在线观看一区| 国产成人亚洲综合a∨婷婷| 日本a级片免费观看| 综合分类小说区另类春色亚洲小说欧美 | 久久亚洲精品国产亚洲老地址| 96sao精品免费视频观看| 97精品视频在线播放| 欧美gay男男猛男无套| 欧美午夜欧美| 国产伦乱精品| 国产免费观看久久黄| 色在线免费观看| 欧美成人免费全部观看天天性色| 国产99久久精品一区二区300| 91午夜在线播放| 青娱乐精品视频在线| 国产v亚洲v天堂无码久久久| 亚洲成人www| av在线第一页| 久久久精品一区二区三区| 日韩88av| 欧美另类videos| 一区二区三区四区中文字幕| 超碰在线免费公开| 久久久久久国产免费| 在线综合亚洲| 黄色永久免费网站| 欧美一区二区三区在线观看视频| 日日狠狠久久| 国产高清不卡av| 337p粉嫩大胆色噜噜噜噜亚洲| 精品欧美不卡一区二区在线观看 | 东方欧美亚洲色图在线| 中文字幕4区| 精品亚洲一区二区三区在线观看 | 天天干天天综合| 精品1区2区3区| 成人精品毛片| 一区二区不卡在线| 亚洲国产美女搞黄色| 亚洲天堂1区| 波多野结衣久草一区| 91偷拍与自偷拍精品| 国产cdts系列另类在线观看| 91国产精品91| 国产a区久久久| 日本视频在线免费观看| 91成人在线视频| 国产成人av一区二区三区在线观看| 在线观看免费网站| 欧美激情xxxx性bbbb| 韩国三级中文字幕hd久久精品| 青青草在线播放| 交换国产精品视频一区| 一本大道久久a久久综合| 欧美日韩在线精品一区二区三区激情综合 | 国产精品一线天粉嫩av| 国产又粗又大又爽的视频| 婷婷开心激情综合| www成人免费| 欧美专区亚洲专区| 在线视频亚洲专区| 精品一区二区中文字幕| 精品国产一区久久| 北岛玲heyzo一区二区| 自拍视频在线观看一区二区| 日本在线视频中文有码| 91色p视频在线| 亚洲欧美日韩国产综合在线| 午夜伦理福利在线| 久久亚洲高清| 久久久99免费视频| 一区二区三区亚洲变态调教大结局 | 精品久久久久久中文字幕大豆网| 国产成人精品一区二区三区视频 | 日韩免费观看高清完整版| 在线电影一区二区| 成人在线视频网址| 亚洲影视在线播放| 日韩三级av| jizzzz日本| 7777免费精品视频| 日韩美女久久久| 成人偷拍自拍| jizz18欧美| 欧美日韩国产高清一区二区三区 | 国产系列第一页| 欧美一级视频精品观看| 黄色成人91| 国产二区三区在线| 欧美午夜精品久久久久免费视| 欧美高清你懂得| 免费人成黄页网站在线一区二区| 成人一级福利| 成人免费观看在线| 免费人成在线不卡| 色图在线观看| 亚洲精品高清视频| 日韩精品中文字| 国产精品人成在线观看免费| 国产三区在线成人av| se69色成人网wwwsex| 日韩中文一区二区三区| 欧美综合影院| 岛国大片在线播放| 在线播放国产精品| 成人精品电影在线观看| 欧美一级在线| 蜜桃免费在线视频| 啪一啪鲁一鲁2019在线视频| 亚洲欧洲精品一区二区三区| 国产精品一国产精品| 青青草在线免费观看| 欧美日韩一区在线播放| 日韩av一区二区在线观看| 成人在线综合网| 日韩av字幕| 国产一级片在线| 欧美亚洲视频一区| 欧美黑人一区二区三区| 午夜精品久久久久久久久| 黄网av在线| 日韩在线视频在线| 97超级碰碰人国产在线观看| 欧美午夜www高清视频| 噜噜爱69成人精品| 成人亚洲免费| 李宗瑞系列合集久久| 视频一区视频二区视频| 久久影院中文字幕| 大荫蒂欧美视频另类xxxx| 日韩精品成人一区二区三区 | 国产精品video| 欧美卡1卡2卡| 99国产精品国产精品久久| 欧美日韩国产高清电影| 在线看福利影| 中文字幕无码不卡免费视频| 国产精品户外野外| 精品国产欧美一区二区| 国产欧美日韩在线| 99亚洲视频| 伊色综合久久之综合久久| www.亚洲免费| 91小视频网站| 日韩欧美在线观看强乱免费| 琪琪第一精品导航|