You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					187 lines
				
				4.8 KiB
			
		
		
			
		
	
	
					187 lines
				
				4.8 KiB
			| 
											2 years ago
										 | = Javascript 常用技巧 | ||
|  | == 如何确认给定的日期是否是当前日期 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isCurrentDay = (date) => new Date().toISOString().slice(0, 10) === date.toISOString().slice(0, 10); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何确定一个日期是否在两个日期之间 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isBetweenTwoDates = ( min, max, date) => date.getTime() >= min.getTime() && date.getTime() <= max.getTime(); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何确认一个日期是否在周末 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isWeekend = ( date ) => date.getDay() === 6 || date.getDay() === 0; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 检查一个日期是否在某年内 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isInAYear = (date, year) => date.getUTCFullYear() === new Date(`${year}`).getUTCFullYear(); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 将小时转换为 AM-PM 格式 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toAMPMFormat= (h) => `${h % 12 === 0 ? 12 : h % 12}${h < 12 ? ' am.' : ' pm.'}`; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 将句子的第一个字母大写 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const capitalize = ([first, ...rest]) => `${first.toUpperCase()}${rest.join('')}`; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 将英文字母转成对应的emoji形式 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const letterToEmoji = c => String.fromCodePoint(c.toLowerCase().charCodeAt() + 127365); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何判断一个字符串是不是回文 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isPalindrome = (str) => str.toLowerCase() === str.toLowerCase().split('').reverse().join(''); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何计算一个数的阶乘 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const getFactorial = (n) => (n <= 1 ? 1 : n * getFactorial(n - 1)); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何计算一个斐波那契数列第N项(Fibonacci)? | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const getFibonacci = (n, memo = {}) => memo[n] || (n <= 2 ? 1 : (memo[n] = getFibonacci(n - 1, memo) + getFibonacci(n - 2, memo))); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 数组复制 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const copyToArray = (arr) => [...arr]; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 简单数组去重 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const getUnique = (arr) => [...new Set(arr)]; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 洗牌算法(随机数组) | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const shuffle = (arr) => arr.sort(() => Math.random() - 0.5); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 按属性对数组进行聚合分组(类似 SQL 的 group by) | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const groupBy = (arr, groupFn) => | ||
|  | arr.reduce( (grouped, obj) => | ||
|  |            ({...grouped, | ||
|  |              [groupFn(obj)]: [...(grouped[groupFn(obj)] || []), obj], }), | ||
|  |            {}); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 反转字符串 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const reverseString = (str) => str.split('').reverse().join(''); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 检查两个数组是否包含相同的值 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const containSameValues= (arr1, arr2) => arr1.sort().join(',') === arr2.sort().join(','); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 温度转换(符号℉。华氏度 = 32+ 摄氏度× 1.8) | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toFahrenheit= (celsius) => (celsius * 9)/5 + 32; | ||
|  | const toCelsius= (fahrenheit) => (fahrenheit - 32) * 5 / 9; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何清除浏览器中的所有 cookie | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const clearAllCookies = () => document.cookie.split(';') | ||
|  | .forEach((c) => (document.cookie = c.replace(/^ +/, '') | ||
|  |                 .replace(/=.*/, `=;expires=${new Date().toUTCString()}; | ||
|  |                 path=/`))); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何从 HEX 转换为 RGB 色值 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toRGB= (hex) => | ||
|  |     hex | ||
|  |         .replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, | ||
|  |                  (_, r, g, b) => `#${r}${r}${g}${g}${b}${b}`) | ||
|  |         .substring(1) | ||
|  |         .match(/.{2}/g) | ||
|  |         .map((x) => parseInt(x, 16)); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何将 RGB 转换为 HEX | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toHEX = (r,g,b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 检查函数是否为异步函数 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isAsyncFunction = (f) => Object.prototype.toString.call(f) === '[object AsyncFunction]'; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何确认代码是否在浏览器中运行 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const runningInBrowser = typeof window === 'object' && typeof document === 'object'; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 如何确认代码是否在 Node 中运行 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const runningInNode= typeof process !== 'undefined' && process.versions != null && process.versions.node != null; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 检测系统是否是暗模式 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const isDarkMode = () => window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches; | ||
|  | ---- | ||
|  | 
 | ||
|  | == 滚动到顶部 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toTop = (element) => element.scrollIntoView({ behavior: "smooth", block: "start" }); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 滚动到底部 | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const toBottom = (element) => element.scrollIntoView({ behavior: "smooth", block: "end" }); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 将 JSON 转换为 MAP | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const jsonToMap = (json) => new Map(Object.entries(JSON.parse(json))); | ||
|  | ---- | ||
|  | 
 | ||
|  | == 生成 128 位 UUID | ||
|  | [source,javascript] | ||
|  | ---- | ||
|  | const generateUUID = (a) => a? | ||
|  |       (a ^ ((Math.random() * 16) >> (a / 4))).toString(16):([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g,generateUUID); | ||
|  | ---- | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 |