摘要:英文文章來(lái)源于返回參數(shù)列表中第一個(gè)非和的參數(shù)用實(shí)現(xiàn)返回第一個(gè)非參數(shù)返回一個(gè)用自定義函數(shù)中的函數(shù)是否返回來(lái)對(duì)中傳入的參數(shù)列表盡心過(guò)濾用去遍歷參數(shù)列表,用給定的函數(shù)的返回值來(lái)過(guò)濾參數(shù)列表返回給定值的基本類型返回給定值的構(gòu)造函數(shù)名字的小
Utility
英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md
coalesce返回參數(shù)列表中第一個(gè)非null和undefined的參數(shù).
用 Array.find() 實(shí)現(xiàn)返回第一個(gè)非 null/undefined 參數(shù).
const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) // coalesce(null,undefined,"",NaN, "Waldo") -> ""coalesceFactory
返回一個(gè)customCoalesce, 用自定義函數(shù)中的validate函數(shù)是否返回true來(lái)對(duì)customCoalesce中傳入的參數(shù)列表盡心過(guò)濾.
用 Array.find()去遍歷參數(shù)列表,用給定的validate函數(shù)的返回值來(lái)過(guò)濾參數(shù)列表.
const coalesceFactory = valid => (...args) => args.find(valid); // const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) // customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo"getType
返回給定值的基本類型.
返回給定值的構(gòu)造函數(shù)名字的小寫(xiě)形式, 如果是"undefined" 或 "null",返回"undefined"或"null"
const getType = v => v === undefined ? "undefined" : v === null ? "null" : v.constructor.name.toLowerCase(); // getType(new Set([1,2,3])) -> "set"extendHex
將一個(gè)3位的HEX顏色值轉(zhuǎn)化為6位的.
用 Array.map(), split() 和 Array.join() 來(lái)實(shí)現(xiàn).
如果HEX是以 #開(kāi)始的,用String.slice()返回一個(gè)沒(méi)有該字符的字符串.
const extendHex = shortHex => "#" + shortHex.slice(shortHex.startsWith("#") ? 1 : 0).split("").map(x => x+x).join("") // extendHex("#03f") -> "#0033ff" // extendHex("05a") -> "#0055aa"hexToRGB
轉(zhuǎn)換HEX顏色為 rgb() ,如果alpha提供的化,轉(zhuǎn)化為 rgba() .
用按位右移操作符(>>>)和掩碼(&)操作符去轉(zhuǎn)換3位進(jìn)制的顏色為RGB顏色.
如果是三位進(jìn)制的就先轉(zhuǎn)化為標(biāo)準(zhǔn)的6位的. 如果在6位后指定 alpha 值, 則返回 rgba() .
const hexToRGB = hex => { let alpha = false, h = hex.slice(hex.startsWith("#") ? 1 : 0); if (h.length === 3) h = [...h].map(x => x + x).join(""); else if (h.length === 8) alpha = true; h = parseInt(h, 16); return "rgb" + (alpha ? "a" : "") + "(" + (h >>> (alpha ? 24 : 16)) + ", " + ((h & (alpha ? 0x00ff0000 : 0x00ff00)) >>> (alpha ? 16 : 8)) + ", " + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? `, ${(h & 0x000000ff)}` : "") + ")"; }; // hexToRGB("#27ae60ff") -> "rgba(39, 174, 96, 255)" // hexToRGB("27ae60") -> "rgb(39, 174, 96)" // hexToRGB("#fff") -> "rgb(255, 255, 255)"RGBToHex
將RGB顏色轉(zhuǎn)換為HEX顏色.
將RGB的顏色用操作符 (<<) 和 toString(16) 轉(zhuǎn)換16進(jìn)制的字符串, 然后 padStart(6,"0") 得到一個(gè)6位的HEX顏色
padStart() 是ES6中的新方法,定義字符串的格式,第一個(gè)參數(shù)是設(shè)定字符串的長(zhǎng)度,第二個(gè)參數(shù)指定不足位置用什么來(lái)代替
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, "0"); // RGBToHex(255, 165, 1) -> "ffa501"isArray
判斷給定給定的值是否是否是數(shù)組.
用 Array.isArray() 判斷給定的值是否為一個(gè)數(shù)組.
const isArray = val => !!val && Array.isArray(val); // isArray(null) -> false // isArray([1]) -> trueisBoolean
半段給定的值是否是一個(gè)基本的Boolean值.
用 typeof 判斷一個(gè)值是否為一個(gè)基本的Boolean值.
const isBoolean = val => typeof val === "boolean"; // isBoolean(null) -> false // isBoolean(false) -> trueisFunction
檢查給定的值是否為一個(gè)函數(shù).
用 typeof 判斷給定的值是否為一個(gè)基本的函數(shù)類型.
const isFunction = val => val && typeof val === "function"; // isFunction("x") -> false // isFunction(x => x) -> trueisNumber
判斷給定的值是否為一個(gè)數(shù)字類型.
用 typeof 判斷一個(gè)值是否為基本的數(shù)字類型.
const isNumber = val => typeof val === "number"; // isNumber("1") -> false // isNumber(1) -> trueisString
判斷給定的值是否為一個(gè)字符串.
用 typeof 判斷給定的值是否為一個(gè)基本的字符串類型.
const isString = val => typeof val === "string"; // isString(10) -> false // isString("10") -> trueisSymbol
判斷給定的值是否為symbol類型.
用 typeof 判斷給定的值是否為基本的symbol類型.
const isSymbol = val => typeof val === "symbol"; // isSymbol("x") -> false // isSymbol(Symbol("x")) -> truetimeTaken
計(jì)算函數(shù)執(zhí)行的時(shí)間.
用 console.time() 和 console.timeEnd() 去計(jì)算從函數(shù)開(kāi)始執(zhí)行到執(zhí)行結(jié)束所花費(fèi)的時(shí)間.
const timeTaken = callback => { console.time("timeTaken"); const r = callback(); console.timeEnd("timeTaken"); return r; }; // timeTaken(() => Math.pow(2, 10)) -> 1024 // (logged): timeTaken: 0.02099609375mstoDecimalMark
用 toLocaleString() 去轉(zhuǎn)換浮點(diǎn)數(shù),用逗號(hào)將數(shù)字分割成字符串的格式 Decimal mark.
const toDecimalMark = num => num.toLocaleString("en-US"); // toDecimalMark(12305030388.9087) -> "12,305,030,388.9087"toOrdinalSuffix
為數(shù)字添加序號(hào)后綴.
用模操作符 (%) 取得指定值的個(gè)位和十分位的數(shù)值.然后找到相對(duì)應(yīng)的序號(hào)與之匹配.
如果digit上沒(méi)有找到,就用 tpattern
const toOrdinalSuffix = num => { const int = parseInt(num), digits = [(int % 10), (int % 100)], ordinals = ["st", "nd", "rd", "th"], oPattern = [1, 2, 3, 4], tPattern = [11, 12, 13, 14, 15, 16, 17, 18, 19]; return oPattern.includes(digits[0]) && !tPattern.includes(digits[1]) ? int + ordinals[digits[0] - 1] : int + ordinals[3]; }; // toOrdinalSuffix("123") -> "123rd"UUIDGenerator
生成 UUID.
用 crypto API生成UUID, 參考資料 RFC4122 version 4.
const UUIDGenerator = () => ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); // UUIDGenerator() -> "7982fcfe-5721-4632-bede-6000885be57d"validateNumber
如果給定的值是數(shù)字類型,那么返回 true; 否則 false.
用 !isNaN 結(jié)合 parseFloat() 來(lái)判定給定的值是否是數(shù)字類型.
用 isFinite() 數(shù)字的長(zhǎng)度是否有限.
用 Number() 去進(jìn)行是否為數(shù)字的強(qiáng)迫檢查.
const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n; // validateNumber("10") -> true
更多關(guān)于30-seconds-code中文翻譯https://github.com/lvzhenbang/article/blob/master/js/30-seconds-code/index.md
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90401.html
摘要:英文文章來(lái)源于給定一個(gè)鍵值和一組參數(shù),但給定一個(gè)上下文時(shí)調(diào)用它們。 英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Adapter call 給定一個(gè)鍵值和一組參數(shù),但給定一個(gè)上下文時(shí)調(diào)用它們。 使用閉包調(diào)用存儲(chǔ)的鍵值與存儲(chǔ)的參數(shù) const call = ( key, ....
摘要:英文文章來(lái)源于刪除對(duì)象中除指定鍵值的屬性用遞歸的方法用方法遍歷對(duì)象然后刪除不是在給定數(shù)組中的屬性如果你傳入,它將對(duì)該鍵所對(duì)應(yīng)的對(duì)象進(jìn)行深度遍歷的變形非原著作對(duì)所有的鍵對(duì)應(yīng)的對(duì)象進(jìn)行深度遍歷用方法遍歷對(duì)象然后刪除不是在給定數(shù)組中的屬性如 英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/READM...
摘要:英文文章來(lái)源于計(jì)算一個(gè)字符串中字符的所有排序情況使用遞歸遍歷字符串中的每個(gè)字符計(jì)算剩余字符串的所有順序用區(qū)合并該字符和剩余字符串的每種順序然后用將該字符串的所有順序合并到一個(gè)數(shù)組中當(dāng)字符串的等于或者時(shí),是兩個(gè)基例字符串的首字母大寫(xiě)用 英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README...
摘要:英文文章來(lái)源于數(shù)組最大公約數(shù)計(jì)算數(shù)字?jǐn)?shù)組最大公約數(shù)用和運(yùn)算式使用遞歸計(jì)算一個(gè)數(shù)字?jǐn)?shù)組的最大公約數(shù)數(shù)組最小公倍數(shù)求數(shù)字?jǐn)?shù)組的最小公倍數(shù)用和運(yùn)算式使用遞歸計(jì)算一個(gè)數(shù)字?jǐn)?shù)組的最小公倍數(shù)返回一個(gè)數(shù)組中的最大值。 英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Array 數(shù)組最大公...
摘要:顯示所有指定的元素用操作符和清除所有指定元素的屬性。使用了兩個(gè)事件監(jiān)聽(tīng)器。將指定的數(shù)組元素轉(zhuǎn)換成元素標(biāo)簽,然后將它們插入指定的選擇器元素內(nèi)用和去生成一個(gè)元素標(biāo)簽列表復(fù)制一個(gè)字符串到剪切板。用去執(zhí)行復(fù)制到剪切板。 英文文章來(lái)源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Browser...
閱讀 1908·2023-04-26 02:46
閱讀 2032·2021-11-25 09:43
閱讀 1173·2021-09-29 09:35
閱讀 2127·2019-08-30 15:56
閱讀 3447·2019-08-30 15:54
閱讀 2675·2019-08-29 16:35
閱讀 3153·2019-08-29 15:25
閱讀 3323·2019-08-29 14:01