25个让你看起来像专业人士的杀手级Javascript单行代码

112 阅读2分钟

数组操作类

查找数组中的最大值

const maxNumber = (arr) => Math.max(...arr);

从数组中删除重复项目

const uniqueArray = (arr) => [...new Set(arr)];

数组元素的总和

const arraySum = (arr) => arr.reduce((acc, val) => acc + val, 0);

展平数组

const flattenArray = (arr) => arr.flat();

打乱数组

const shuffleArray = (arr) => arr.sort(() => Math.random() - 0.5);

查找两个数组的交集

const arrayIntersection = (arr1, arr2) => arr1.filter(value => arr2.includes(value));

获取数组中的最后一项

const getLastItem = (arr) => arr.slice(-1)[0];

从数组中删除虚假值

const removeFalsy = (arr) => arr.filter(Boolean)

字符串操作类

检查字符串是否为回文(例如:123454321)

const isPalindrome = (str) => str === str.split('').reverse().join('');

将字符串中每个单词的首字母大写

const capitalizeWords = (str) => str.replace(/\b\w/g, char => char.toUpperCase()); const uppercaseWords = (str) => str.replace(/^(.)|\s+(.)/g, (c) => c.toUpperCase())

字符串首字母大写

const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)

生成指定长度的随机字符串

const generateRandomString = length => [...Array(length)].map(() => Math.random().toString(36)[2]).join('')

转义HTML特殊字符(防XSS)

const escape = (str) => str.replace(/[&<>"']/g, (m) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[m]))

数字操作类

检查数字是偶数还是奇数

const isEven = (num) => num % 2 === 0;

检查数字是否为素数

const isPrime = (num) => num > 1 && Array.from({ length: Math.sqrt(num) + 1 }, (_, i) => i + 2).every(divisor => num % divisor !== 0);

其他变量操作

将摄氏度转换为华氏度

const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;

生成随机十六进制颜色

const randomHexColor = () => '#'+ Math.floor(Math.random()*16777215).toString(16);

将 rgba 转换为十六进制

const rgbaToHex = (r, g, b) => '#' + [r, g, b].map(num => parseInt(num).toString(16).padStart(2, '0')).join('')

获取变量的类型

const typeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()

交换两个变量(不使用临时变量)

[a, b] = [b, a];

计算两个日期之间的间隔

const dayDiff = (d1, d2) => Math.ceil(Math.abs(d1.getTime() - d2.getTime()) / 86400000)

检查对象是否为空(推荐使用isEmpty)

const isObjectEmpty = (obj) => Object.keys(obj).length === 0; const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object

页面操作类

将内容复制到剪贴板

const copyToClipboard = (content) => navigator.clipboard.writeText(content)

获取鼠标选择

const getSelectedText = () => window.getSelection().toString()

滚动到页面顶部

const goToTop = () => window.scrollTo(0, 0)