摘要:英文文章來源于返回參數列表中第一個非和的參數用實現返回第一個非參數返回一個用自定義函數中的函數是否返回來對中傳入的參數列表盡心過濾用去遍歷參數列表,用給定的函數的返回值來過濾參數列表返回給定值的基本類型返回給定值的構造函數名字的小
Utility
英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md
coalesce返回參數列表中第一個非null和undefined的參數.
用 Array.find() 實現返回第一個非 null/undefined 參數.
const coalesce = (...args) => args.find(_ => ![undefined, null].includes(_)) // coalesce(null,undefined,"",NaN, "Waldo") -> ""coalesceFactory
返回一個customCoalesce, 用自定義函數中的validate函數是否返回true來對customCoalesce中傳入的參數列表盡心過濾.
用 Array.find()去遍歷參數列表,用給定的validate函數的返回值來過濾參數列表.
const coalesceFactory = valid => (...args) => args.find(valid); // const customCoalesce = coalesceFactory(_ => ![null, undefined, "", NaN].includes(_)) // customCoalesce(undefined, null, NaN, "", "Waldo") //-> "Waldo"getType
返回給定值的基本類型.
返回給定值的構造函數名字的小寫形式, 如果是"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
將一個3位的HEX顏色值轉化為6位的.
用 Array.map(), split() 和 Array.join() 來實現.
如果HEX是以 #開始的,用String.slice()返回一個沒有該字符的字符串.
const extendHex = shortHex => "#" + shortHex.slice(shortHex.startsWith("#") ? 1 : 0).split("").map(x => x+x).join("") // extendHex("#03f") -> "#0033ff" // extendHex("05a") -> "#0055aa"hexToRGB
轉換HEX顏色為 rgb() ,如果alpha提供的化,轉化為 rgba() .
用按位右移操作符(>>>)和掩碼(&)操作符去轉換3位進制的顏色為RGB顏色.
如果是三位進制的就先轉化為標準的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顏色轉換為HEX顏色.
將RGB的顏色用操作符 (<<) 和 toString(16) 轉換16進制的字符串, 然后 padStart(6,"0") 得到一個6位的HEX顏色
padStart() 是ES6中的新方法,定義字符串的格式,第一個參數是設定字符串的長度,第二個參數指定不足位置用什么來代替
const RGBToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, "0"); // RGBToHex(255, 165, 1) -> "ffa501"isArray
判斷給定給定的值是否是否是數組.
用 Array.isArray() 判斷給定的值是否為一個數組.
const isArray = val => !!val && Array.isArray(val); // isArray(null) -> false // isArray([1]) -> trueisBoolean
半段給定的值是否是一個基本的Boolean值.
用 typeof 判斷一個值是否為一個基本的Boolean值.
const isBoolean = val => typeof val === "boolean"; // isBoolean(null) -> false // isBoolean(false) -> trueisFunction
檢查給定的值是否為一個函數.
用 typeof 判斷給定的值是否為一個基本的函數類型.
const isFunction = val => val && typeof val === "function"; // isFunction("x") -> false // isFunction(x => x) -> trueisNumber
判斷給定的值是否為一個數字類型.
用 typeof 判斷一個值是否為基本的數字類型.
const isNumber = val => typeof val === "number"; // isNumber("1") -> false // isNumber(1) -> trueisString
判斷給定的值是否為一個字符串.
用 typeof 判斷給定的值是否為一個基本的字符串類型.
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
計算函數執行的時間.
用 console.time() 和 console.timeEnd() 去計算從函數開始執行到執行結束所花費的時間.
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() 去轉換浮點數,用逗號將數字分割成字符串的格式 Decimal mark.
const toDecimalMark = num => num.toLocaleString("en-US"); // toDecimalMark(12305030388.9087) -> "12,305,030,388.9087"toOrdinalSuffix
為數字添加序號后綴.
用模操作符 (%) 取得指定值的個位和十分位的數值.然后找到相對應的序號與之匹配.
如果digit上沒有找到,就用 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
如果給定的值是數字類型,那么返回 true; 否則 false.
用 !isNaN 結合 parseFloat() 來判定給定的值是否是數字類型.
用 isFinite() 數字的長度是否有限.
用 Number() 去進行是否為數字的強迫檢查.
const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n; // validateNumber("10") -> true
更多關于30-seconds-code中文翻譯https://github.com/lvzhenbang/article/blob/master/js/30-seconds-code/index.md
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90401.html
摘要:英文文章來源于給定一個鍵值和一組參數,但給定一個上下文時調用它們。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Adapter call 給定一個鍵值和一組參數,但給定一個上下文時調用它們。 使用閉包調用存儲的鍵值與存儲的參數 const call = ( key, ....
摘要:英文文章來源于刪除對象中除指定鍵值的屬性用遞歸的方法用方法遍歷對象然后刪除不是在給定數組中的屬性如果你傳入,它將對該鍵所對應的對象進行深度遍歷的變形非原著作對所有的鍵對應的對象進行深度遍歷用方法遍歷對象然后刪除不是在給定數組中的屬性如 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/READM...
摘要:英文文章來源于計算一個字符串中字符的所有排序情況使用遞歸遍歷字符串中的每個字符計算剩余字符串的所有順序用區合并該字符和剩余字符串的每種順序然后用將該字符串的所有順序合并到一個數組中當字符串的等于或者時,是兩個基例字符串的首字母大寫用 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README...
摘要:英文文章來源于數組最大公約數計算數字數組最大公約數用和運算式使用遞歸計算一個數字數組的最大公約數數組最小公倍數求數字數組的最小公倍數用和運算式使用遞歸計算一個數字數組的最小公倍數返回一個數組中的最大值。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Array 數組最大公...
摘要:顯示所有指定的元素用操作符和清除所有指定元素的屬性。使用了兩個事件監聽器。將指定的數組元素轉換成元素標簽,然后將它們插入指定的選擇器元素內用和去生成一個元素標簽列表復制一個字符串到剪切板。用去執行復制到剪切板。 英文文章來源于:https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md Browser...
閱讀 1863·2023-04-26 02:46
閱讀 1995·2021-11-25 09:43
閱讀 1140·2021-09-29 09:35
閱讀 2095·2019-08-30 15:56
閱讀 3419·2019-08-30 15:54
閱讀 2627·2019-08-29 16:35
閱讀 3116·2019-08-29 15:25
閱讀 3282·2019-08-29 14:01