本文整理了非常有用的单行代码,这些需求都是在开发中非常常见的,用单行代码可以帮助你提高工作效率
数组去重
从数组中删除所有重复值,实现方式非常多,我们这里说最简单的方式,一行代码搞定!
const uniqueArr = (arr) => [...new Set(arr)];
console.log(uniqueArr(['前端','js','c#','html','js','css','java','c#']));
// ['前端', 'js', 'c#', 'html', 'css', 'java']
从URL获取参数并转为对象
网页路径经常是:www.baidu.com?search=js&xxx=kkk 这种形式的,我们经常需要取参数,可以是第三方的 qs 包实现,如果你只是要实现取参数,这一句代码就可以实现。
const getParameters = URL => JSON.parse(`{"${decodeURI(URL.split("?")[1]).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')}"}`)
console.log(getParameters("https://www.google.com.hk/search?q=js+md&newwindow=1"));
// {q: 'js+md', newwindow: '1'}
检查对象是否为空
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;
isEmpty({}) //true
isEmpty({a:"not empty"}) //false
反转字符串
反转字符串可以使用split 结合 reverse 和 join 的方法轻松实现
const reverse = str => str.split('').reverse().join('');
console.log(reverse('this is reverse'));
检查设备类型
使用 navigator.userAgent 判断是移动设备还是电脑设备:
const judgeDeviceType = () => /Android|webOs|iPhone|iPad|iPod|BlackBerry|IEMobile|OperaMini/i.test(navigator.userAgent) ? "Mobile" : "PC";
console.log(judgeDeviceType());
文字复制到剪切板
Clipboard API 它的左右操作都是异步的,返回 Promise 对象,不会造成页面卡顿。而且它可以将任意内容(比如图片)放入剪切板。
const copyText = async (text) => await navigator.clipboard.writeText(text)
console.log(copyText('单行代码,前端世界'));
获取选定的文本
使用内置的 getSelection 获取用户选择的文本:
const getSelectedText = () => window.getSelection().toString();
console.log(getSelectedText()); //返回选中的内容
查询某天是否为工作日
我们自己写日历组件时经常会用到,判断某个日期是否为工作日;周一至周五为工作日
const isWeekday = (date) => date.getDay() % 6 !== 0;
console.log(isWeekday(new Date(2022,10,16)));
计算数组平均值
const average = (arr) => arr.reduce((a,b) => a + b) / arr.length;
console.log(average([1,9,18,36])); //16