日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

25 個(gè) JavaScript 實(shí)用函數(shù),我會(huì)復(fù)制粘貼到每個(gè)項(xiàng)目中(必備)

admin
2025年5月19日 12:26 本文熱度 15

?


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

你也經(jīng)歷過(guò)那種感覺(jué)吧:當(dāng)你深入一個(gè)項(xiàng)目,突然需要對(duì)某個(gè)函數(shù)進(jìn)行 debounce 處理、限制某個(gè)滾動(dòng)事件,或者安全地訪問(wèn)一個(gè)嵌套對(duì)象。

沒(méi)錯(cuò),我也是。

所以,與其每次都從頭開(kāi)始編寫(xiě)這些實(shí)用工具,不如整理一下這個(gè)包含 25 個(gè)可復(fù)用的 JavaScript 函數(shù)的小集合,我?guī)缀鯐?huì)把它們復(fù)制粘貼到每個(gè)項(xiàng)目中。

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

我們開(kāi)始吧。

1. Debounce

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

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

2. 節(jié)流閥

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

因?yàn)槊看螡L動(dòng)像素觸發(fā) = 瀏覽器崩潰。

3. 深度克隆

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

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

4. 復(fù)制到剪貼板

像老板一樣粘貼,適用于現(xiàn)代瀏覽器。

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

5. Sleep

用于延遲動(dòng)畫(huà)或模擬異步加載。

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

6. Clamp

控制值——例如滾動(dòng)位置或輸入限制。

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

7. Object

因?yàn)?typeof null === 'object' 是 JavaScript 版的惡意代碼。

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

8. Empty

當(dāng) if (obj) 無(wú)法滿足需求時(shí)。

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

9. UUID 生成器

即時(shí)唯一 ID——無(wú)需 npm i uuid。

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

10. Once

有時(shí)候,一次就夠了。想想:事件監(jiān)聽(tīng)器、API 調(diào)用、煙火表演。

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

11. 獲取查詢參數(shù)

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

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

12. 范圍生成器

因?yàn)?for 循環(huán)現(xiàn)在已經(jīng)過(guò)時(shí)了。

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

 13. 移除重復(fù)項(xiàng)

不再需要復(fù)雜的過(guò)濾操作。讓 Set 自行處理。

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

14. 安全訪問(wèn) (get)

深度訪問(wèn),不會(huì)導(dǎo)致應(yīng)用崩潰。類似 Lodash 的 get(),但更精簡(jiǎn)。

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

15. 分組

根據(jù)公共屬性對(duì)項(xiàng)目列表進(jìn)行分組。即時(shí)分析的魔法。

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

即時(shí)“5 分鐘前發(fā)布”的魔法。

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(淺)

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

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

19. 隨機(jī)排序

給你的 UI 或測(cè)驗(yàn)應(yīng)用增添一點(diǎn)混亂。

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

 20. 格式化貨幣

因?yàn)?$123456.789 看起來(lái)應(yīng)該寫(xiě)成 $123,456.79 更好。

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

 21. 扁平化數(shù)組

將 [1, [2, [3]]] 轉(zhuǎn)換為 [1, 2, 3] —— 遞歸,誰(shuí)用得著?

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

22. isBrowser

用于服務(wù)器端渲染設(shè)置并避免出現(xiàn) window is not definition 錯(cuò)誤。

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

 23. 大寫(xiě)

將 hello 轉(zhuǎn)換為 Hello,就像一個(gè)普通的字符串一樣。

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

 24. 分塊數(shù)組

將大數(shù)組拆分成易于理解的小塊。

function chunk(arr, size) {  return Array.from({ lengthMath.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;}

 總結(jié)

以上就是我今天想與你分享的25 個(gè)我?guī)缀蹼x不開(kāi)的 JavaScript 實(shí)用函數(shù)。

復(fù)制粘貼它們,修改它們,如果需要的話,把它們刻在你的鍵盤(pán)上。


閱讀原文:https://mp.weixin.qq.com/s/iLr1on2RGHFK79C3Axr7MQ


該文章在 2025/5/19 12:26:39 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产婷婷精品任我爽欧美 | 国产在线视频不卡一区二区 | 免费国产午夜高清在线视频 | 欧美人成在线观 | 日韩欧美自 | 国产中文字幕永久 | 日韩一区免费视频99 | 国产高清视频一区二区在线观看 | 国产性爱在线观看视频 | 乱码一二三入区口 | 国产亚洲欧美日韩国产片 | 国产欧美在线观看精品一区二区 | 日本打工渡假 | 国产乱国产乱老熟300部 | 国产小视频在线直播播放 | 欧美性愤潮xxxx | 国产精品va尤物在 | 亚洲综合中文 | 日韩在线观看中文字幕一区二区 | 国产精品视频分类一区 | 日本人視頻網站一 | 国产亚洲日韩网曝欧美精品 | 国产玉足脚交极品在线视频 | 国产激情一区二区三区小说 | 日韩欧美不卡 | 久碰人澡人澡人澡人澡91 | 欧美日韩第一页中文字幕 | 99精品国产九九国产精品 | 韩国大片| 日韩精品中文字幕在线 | 日韩视频第一页 | 羞羞影院成人午夜爽爽在线 | 国产91综合 | 精品精品国产自在97香蕉 | 日韩精品一区二区三区成人vr | 国产大奶子在线播放免费 | 日韩欧美亚洲一区精选 | a级情欲片| 日韩一级性生活 | 欧美日韩一级免费 | 日韩一区二区三区电影成人 |