JavaScript开发小技巧
Posted linjie1930906722
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript开发小技巧相关的知识,希望对你有一定的参考价值。
总结一些能够提高开发效率的JS技巧
1、过滤唯一值
Set类型是在ES6中新增的,它类似于数组,但是成员的值都是唯一的,没有重复的值。结合扩展运算符(...)我们可以创建一个新的数组,达到过滤原数组重复值的功能。
const array2 = [1, 2, 3, 3, 5, 5, 1]; const uniqueArray = [...new Set(array2)]; console.log(uniqueArray); // [1, 2, 3, 5]
2、转换Number类型
let testInt = "12"; testInt = +testInt; console.log(testInt); // Result: 12
3、截取数组,如果你知道原始数组的长度,就可以通过重新定义它的length属性来实现截取。
let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; array.length = 4; console.log(array); // Result: [0, 1, 2, 3]
slice()方法的运行时更快。如果速度是你的主要目标,考虑使用下面的方式。
let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; array = array.slice(0, 4); console.log(array); // Result: [0, 1, 2, 3]
4、获取数组中的最后的元素,数组方法slice()可以接受负整数,如果提供它,它将从数组的末尾开始截取数值,而不是开头。
let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log(array.slice(-1)); // Result: [9] console.log(array.slice(-2)); // Result: [8, 9] console.log(array.slice(-3)); // Result: [7, 8, 9]
5、是否为质数
const mathIsPrime = n => if (n === 2 || n === 3) return true if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) return false; for (let x = 6; x <= Math.sqrt(n) + 1; x += 6) if (n % (x - 1) == 0 || n % (x + 1) == 0) return false return true mathIsPrime(0) // false
6、RGB色值生成16进制色值
const rgb2Hex = (r, g, b) => r = Math.max(Math.min(Number(r), 100), 0) * 2.55 g = Math.max(Math.min(Number(g), 100), 0) * 2.55 b = Math.max(Math.min(Number(b), 100), 0) * 2.55 r = (‘0‘ + (Math.round(r) || 0).toString(16)).slice(-2) g = (‘0‘ + (Math.round(g) || 0).toString(16)).slice(-2) b = (‘0‘ + (Math.round(b) || 0).toString(16)).slice(-2) return ‘#‘ + r + g + b rgb2Hex(100, 50, 0) // "#ff7f00"
7、颜色混合
const colourBlend = (c1, c2, ratio) => ratio = Math.max(Math.min(Number(ratio), 1), 0) let r1 = parseInt(c1.substring(1, 3), 16) let g1 = parseInt(c1.substring(3, 5), 16) let b1 = parseInt(c1.substring(5, 7), 16) let r2 = parseInt(c2.substring(1, 3), 16) let g2 = parseInt(c2.substring(3, 5), 16) let b2 = parseInt(c2.substring(5, 7), 16) let r = Math.round(r1 * (1 - ratio) + r2 * ratio) let g = Math.round(g1 * (1 - ratio) + g2 * ratio) let b = Math.round(b1 * (1 - ratio) + b2 * ratio) r = (‘0‘ + (r || 0).toString(16)).slice(-2) g = (‘0‘ + (g || 0).toString(16)).slice(-2) b = (‘0‘ + (b || 0).toString(16)).slice(-2) return ‘#‘ + r + g + b colourBlend(‘#ff0000‘, ‘#3333ff‘, 0.5) // "#991a80"
8、时间格式化
const dateFormatter = (formatter, date) => date = (date ? new Date(date) : new Date) const Y = date.getFullYear() + ‘‘, M = date.getMonth() + 1, D = date.getDate(), H = date.getHours(), m = date.getMinutes(), s = date.getSeconds() return formatter.replace(/YYYY|yyyy/g, Y) .replace(/YY|yy/g, Y.substr(2, 2)) .replace(/MM/g, (M < 10 ? ‘0‘ : ‘‘) + M) .replace(/DD/g, (D < 10 ? ‘0‘ : ‘‘) + D) .replace(/HH|hh/g, (H < 10 ? ‘0‘ : ‘‘) + H) .replace(/mm/g, (m < 10 ? ‘0‘ : ‘‘) + m) .replace(/ss/g, (s < 10 ? ‘0‘ : ‘‘) + s) dateFormatter(‘YYYY-MM-DD HH:mm‘, ‘2019/08/30 13:55‘) // 2019-08-30 13:55
以上是关于JavaScript开发小技巧的主要内容,如果未能解决你的问题,请参考以下文章