總結(jié)28個(gè)令人驚艷的JavaScript單行代碼
1. 階乘計(jì)算
使用遞歸函數(shù)計(jì)算給定數(shù)字的階乘。
const factorial = n => n === 0 ? 1 : n * factorial(n - 1); console.log(factorial(5)); // 輸出 120
2. 判斷一個(gè)變量是否為對象類型
const isObject = variable === Object(variable);
3. 數(shù)組去重
利用Set數(shù)據(jù)結(jié)構(gòu)的特性,去除數(shù)組中的重復(fù)元素。
const uniqueArray = [...new Set(array)];
4. 數(shù)組合并
合并多個(gè)數(shù)組,創(chuàng)建一個(gè)新的數(shù)組。
const mergedArray = [].concat(...arrays);
5. 快速最大值和最小值
獲取數(shù)組中的最大值和最小值。
const max = Math.max(...array); const min = Math.min(...array);
6. 數(shù)組求和
快速計(jì)算數(shù)組中所有元素的和。
const sum = array.reduce((acc, cur) => acc + cur, 0);
7. 獲取隨機(jī)整數(shù)
生成一個(gè)指定范圍內(nèi)的隨機(jī)整數(shù)。
const randomInt = Math.floor(Math.random() * (max - min + 1)) + min;
8. 反轉(zhuǎn)字符串
將字符串反轉(zhuǎn)。
const reversedString = string.split('').reverse().join('');
9. 檢查回文字符串
判斷一個(gè)字符串是否為回文字符串。
const isPalindrome = string === string.split('').reverse().join('');
10. 扁平化數(shù)組
將多維數(shù)組轉(zhuǎn)換為一維數(shù)組。
const flattenedArray = array.flat(Infinity);
11. 取隨機(jī)數(shù)組元素
從數(shù)組中隨機(jī)取出一個(gè)元素。
const randomElement = array[Math.floor(Math.random() * array.length)];
12. 判斷數(shù)組元素唯一
檢查數(shù)組中的元素是否唯一。
const isUnique = array.length === new Set(array).size;
13. 字符串壓縮
將字符串中重復(fù)的字符進(jìn)行壓縮。
const compressedString = string.replace(/(.)\1+/g, match => match[0] + match.length);
14. 生成斐波那契數(shù)列
生成斐波那契數(shù)列的前n項(xiàng)。
const fibonacci = Array(n).fill().map((_, i, arr) => i <= 1 ? i : arr[i - 1] + arr[i - 2]);
15. 數(shù)組求交集
獲取多個(gè)數(shù)組的交集。
const intersection = arrays.reduce((acc, cur) => acc.filter(value => cur.includes(value)));
16. 驗(yàn)證郵箱格式
檢查字符串是否符合郵箱格式。
const isValidEmail = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/.test(email);
17. 數(shù)組去除假值
移除數(shù)組中的所有假值,如false
,null
,0
,""
和undefined
。
const truthyArray = array.filter(Boolean);
18. 求階乘
計(jì)算一個(gè)數(shù)的階乘。
const factorial = n => n <= 1 ? 1 : n * factorial(n - 1);
19. 判斷質(zhì)數(shù)
檢查一個(gè)數(shù)是否為質(zhì)數(shù)。
const isPrime = n => ![...Array(n).keys()].slice(2).some(i => n % i === 0);
20. 檢查對象是空對象
判斷對象是否為空對象。
const isEmptyObject = Object.keys(object).length === 0 && object.constructor === Object;
21. 判斷回調(diào)函數(shù)為真
檢查數(shù)組中的每個(gè)元素是否滿足特定條件。
const allTrue = array.every(condition);
22. 檢查回調(diào)函數(shù)為假
檢查數(shù)組中是否有元素滿足特定條件。
const anyFalse = array.some(condition);
23. 數(shù)組排序
對數(shù)組進(jìn)行排序。
const sortedArray = array.sort((a, b) => a - b);
24. 日期格式化
將日期對象格式化為指定格式的字符串。
const formattedDate = new Date().toISOString().slice(0, 10);
25. 將字符串轉(zhuǎn)為整數(shù)類型
const intValue = +str;
26. 計(jì)算數(shù)組中元素出現(xiàn)的次數(shù)
統(tǒng)計(jì)數(shù)組中各元素的出現(xiàn)次數(shù)。
const countOccurrences = array.reduce((acc, cur) => (acc[cur] ? acc[cur]++ : acc[cur] = 1, acc), {});
27. 交換兩個(gè)變量的值
[a, b] = [b, a];
28. 利用逗號運(yùn)算符分隔多個(gè)表達(dá)式
const result = (expression1, expression2, ..., expressionN);
以上就是總結(jié)28個(gè)令人驚艷的JavaScript單行代碼的詳細(xì)內(nèi)容,更多關(guān)于JavaScript單行代碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法
今天小編就為大家分享一篇layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09如何手動(dòng)實(shí)現(xiàn)一個(gè) JavaScript 模塊執(zhí)行器
這篇文章主要介紹了如何手動(dòng)實(shí)現(xiàn)一個(gè) JavaScript 模塊執(zhí)行器,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下2020-10-10Javascript attachEvent傳遞參數(shù)的辦法
找了半天找到的解決辦法,看介紹說是javascript的閉包問題,導(dǎo)致得不能直接讀取外部的那個(gè)函數(shù),不然就所有傳遞的參數(shù)都變?yōu)樽詈笠粋€(gè)了。2009-12-12實(shí)現(xiàn)只能輸入數(shù)字的input不用replace方法
只能輸入數(shù)字在以往都是使用replace方法實(shí)現(xiàn)的,在本文你將學(xué)習(xí)到不使用它依然可以實(shí)現(xiàn),具體代碼如下,感興趣的朋友可以參考下2013-09-09JS將時(shí)間的標(biāo)準(zhǔn)格式和時(shí)間戳格式和2022-01-27?00:00:00(年月日時(shí)分秒)格式相互轉(zhuǎn)換(最新推薦)
這篇文章主要介紹了JS如何將時(shí)間的標(biāo)準(zhǔn)格式和時(shí)間戳格式和2022-01-27?00:00:00(年月日時(shí)分秒)格式相互轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05javascript 一個(gè)函數(shù)對同一元素的多個(gè)事件響應(yīng)
具體方法如下該方法實(shí)現(xiàn)了對一個(gè)按鈕的mouseover和click事件的響應(yīng)2009-07-07