超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

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

20個js實用技巧,讓你代碼更簡潔高效

liguoquan
2025年1月21日 16:2 本文熱度 1230
:20個js實用技巧,讓你代碼更簡潔高效


20 個 js 實用技巧,讓你代碼更簡潔高效

?

1. 解構(gòu)賦值與重命名

在解構(gòu)對象時,可以直接重命名變量,避免命名沖突。

arduino
代碼解讀
復(fù)制代碼
const user = { name: 'yun', age: 25 }; const { name: userName, age: userAge } = user; console.log(userName); // yun console.log(userAge);  // 25

應(yīng)用場景:從 API 返回的數(shù)據(jù)中提取字段時,字段名與現(xiàn)有變量沖突。

2. 快速移除數(shù)組中的假值

filter(Boolean) 是清理數(shù)組中無效值的利器。

ini
代碼解讀
復(fù)制代碼
const arr = [0, 'hello', null, 42, false, 'world']; const filtered = arr.filter(Boolean); console.log(filtered); // ["hello", 42, "world"]

應(yīng)用場景:清理用戶輸入或 API 返回的數(shù)組。

3. 數(shù)組去重

使用 Set 快速去重。

ini
代碼解讀
復(fù)制代碼
const arr = [1, 2, 2, 3, 3, 4]; const unique = [...new Set(arr)]; console.log(unique); // [1, 2, 3, 4]

應(yīng)用場景:處理重復(fù)數(shù)據(jù)時。

4. 按屬性對對象數(shù)組排序

使用 sort() 方法輕松實現(xiàn)對象數(shù)組排序。

css
代碼解讀
復(fù)制代碼
const users = [  { name: 'yun', age: 25 },  { name: 'mu', age: 20 }]; users.sort((a, b) => a.age - b.age); console.log(users); // [{ name: 'yun', age: 20 }, { name: 'mu', age: 25 }]

應(yīng)用場景:對用戶列表、商品列表等數(shù)據(jù)排序。

5. 數(shù)組扁平化

使用 Array.flat(Infinity) 展平多層嵌套數(shù)組。

ini
代碼解讀
復(fù)制代碼
const nested = [1, [2, [3, [4]]]]; console.log(nested.flat(Infinity)); // [1, 2, 3, 4]

應(yīng)用場景:處理嵌套 JSON 數(shù)據(jù)或數(shù)組。

6. 快速獲取數(shù)組最后一項

使用 arr.at(-1) 獲取數(shù)組最后一項。

ini
代碼解讀
復(fù)制代碼
const arr = [1, 2, 3, 4]; console.log(arr.at(-1)); // 4

應(yīng)用場景:處理?;蜿犃袝r。

7. 生成連續(xù)數(shù)字?jǐn)?shù)組

使用 Array 和 keys() 快速生成連續(xù)數(shù)字?jǐn)?shù)組。

ini
代碼解讀
復(fù)制代碼
const numbers = [...Array(5).keys()]; console.log(numbers); // [0, 1, 2, 3, 4]

應(yīng)用場景:生成索引或序列。

8. 合并對象

使用擴(kuò)展運算符合并對象。

ini
代碼解讀
復(fù)制代碼
const obj1 = { a: 1 }; const obj2 = { b: 2 }; const merged = { ...obj1, ...obj2 }; console.log(merged); // { a: 1, b: 2 }

應(yīng)用場景:合并配置或狀態(tài)對象。

9. 快速刪除對象屬性

通過解構(gòu)賦值刪除對象中的某些屬性。

yaml
代碼解讀
復(fù)制代碼
const { unwanted, ...rest } = { unwanted: 0, a: 1, b: 2 }; console.log(rest); // { a: 1, b: 2 }

應(yīng)用場景:清理對象中的無用字段。

10. 首字母大寫

快速將字符串首字母大寫。

python
代碼解讀
復(fù)制代碼
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1); console.log(capitalize('hello')); // 'Hello'

應(yīng)用場景:格式化用戶輸入或顯示內(nèi)容。

11. 記憶化函數(shù)

緩存函數(shù)結(jié)果,避免重復(fù)計算。

ini
代碼解讀
復(fù)制代碼
const memoize = (fn) => {  const cache = {};  return (...args) => {    const key = JSON.stringify(args);    if (!cache[key]) {      cache[key] = fn(...args);    }    return cache[key];  }; }; const slowSquare = (n) => n * n; const memoizedSquare = memoize(slowSquare); console.log(memoizedSquare(4)); // 16 console.log(memoizedSquare(4)); // 16 (從緩存中獲取)

應(yīng)用場景:優(yōu)化計算密集型函數(shù)。

12. 防抖函數(shù)

限制高頻觸發(fā)的函數(shù)調(diào)用。

javascript
代碼解讀
復(fù)制代碼
function debounce(fn, delay) {  let timer;  return function(...args) {    clearTimeout(timer);    timer = setTimeout(() => fn.apply(this, args), delay);  }; }

應(yīng)用場景:搜索框輸入、窗口調(diào)整大小事件。

13. 節(jié)流函數(shù)

控制函數(shù)調(diào)用頻率。

ini
代碼解讀
復(fù)制代碼
function throttle(fn, delay) {  let last = 0;  return function(...args) {    const now = Date.now();    if (now - last >= delay) {      fn.apply(this, args);      last = now;    }  }; }

應(yīng)用場景:滾動事件、鼠標(biāo)移動事件。

14. 安全訪問嵌套屬性

使用可選鏈操作符安全訪問嵌套屬性。

sql
代碼解讀
復(fù)制代碼
const user = { address: { street: 'Main St' } }; console.log(user?.address?.street); // 'Main St' console.log(user?.contact?.phone); // undefined

應(yīng)用場景:避免訪問未定義屬性時報錯。

15. 空值合并運算符

為變量提供默認(rèn)值。

ini
代碼解讀
復(fù)制代碼
const value = null ?? 'default'; console.log(value); // 'default'

應(yīng)用場景:處理空值或未定義值。

16. 格式化日期

使用 Intl.DateTimeFormat 格式化日期。

javascript
代碼解讀
復(fù)制代碼
const date = new Date(); const formatted = new Intl.DateTimeFormat('zh-CN', {  dateStyle: 'full', }).format(date); console.log(formatted); // 2024年11月24日星期日

應(yīng)用場景:國際化項目中顯示用戶友好的日期格式。

17. 生成隨機(jī)顏色

快速生成隨機(jī)顏色。

javascript
代碼解讀
復(fù)制代碼
const randomColor = () => `#${Math.floor(Math.random() * 16777215).toString(16)}`; console.log(randomColor()); // '#a3e12f'

應(yīng)用場景:動態(tài)生成顏色主題。

18. Promise 超時處理

為異步操作設(shè)置超時時間。

javascript
代碼解讀
復(fù)制代碼
const timeout = (promise, ms) => {  return Promise.race([    promise,    new Promise((_, reject) => setTimeout(() => reject('timeout'), ms))  ]); };

應(yīng)用場景:網(wǎng)絡(luò)請求超時處理。

19. localStorage 封裝

封裝 localStorage,簡化數(shù)據(jù)存儲。

javascript
代碼解讀
復(fù)制代碼
const storage = {  set: (key, value) => localStorage.setItem(key, JSON.stringify(value)),  get: (key) => JSON.parse(localStorage.getItem(key)), }; storage.set('user', { name: 'Yun' }); console.log(storage.get('user')); // { name: 'Yun' }

應(yīng)用場景:本地存儲用戶數(shù)據(jù)。

20. 優(yōu)雅的 console.log

為日志添加時間戳和樣式。

javascript
代碼解讀
復(fù)制代碼
const log = (...args) => console.log(`%c[${new Date().toLocaleTimeString()}]`, 'color: #bada55', ...args); log('Hello, world!'); // [12:34:56] Hello, world!

應(yīng)用場景:調(diào)試時更清晰地查看日志。


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