分享几个短小精悍实用的 js 代码
时间:2026-5-17 00:34 作者:独元殇 分类: 前端技术
今天我把自己收藏的几个分享一下。都是一些过去可能得专门 pnpm npm 导入新库才能实现的功能,实际上几个字符就能搞定。在 AI 时代,收集到自己的收藏库里,可能会让 AI 生成的代码引入库更少,避开 AI 生成代码的冗余、兼容性隐患.... 反正不管怎么说,看看新鲜也行。
比如第一个,我前年做的业务里,需要随机 ID (唯一识别码 UUID)。
本来下意识是使用 random 或者各种歪门邪道自己搞一个。后来在一个外网的大佬里,学了一招。没想到 JS 里竟然有这种 API :
const getUUID = () => crypto.randomUUID();
console.log(getUUID())
// 输出例子: df91af4f-0115-44ad-88b2-1279db811e62
这个可不是随机数,这个是内置的crypto加密模块搞的,安全性很高!不会出现重复(有生之年)。
(注意,crypto 不是 es 接口,做通用库兼容性还是要注意的,比如微信小程序不支持。有些环境还得引入 uuid 库)
然后是一个 异步 同步 的问题。
在 js 里,异步 是写着不爽,调试起来更不爽的东西。
但是 GEMINI 曾经给我一个 巧妙的 写法。
一定程度上,可以基本上让 代码 不再考虑 异步 。就是一切代码都是 同步 的,一条线顺着写下去的。
const wait = (ms = 0) => new Promise(res => setTimeout(res, ms));
// 使用例子(大家应该能领悟到,它的强大吧?!)
await wait(1000)
console.log('1秒后')
这一下子就让 js 的编写没有那么绕脑子了哈哈!全不用再考虑异步那套东西!
接下来是一个也是很常用的场景,就是枚举等需要反向查询值的时候,有个函数也很好用:
const flipObject = (obj = {}) => Object.fromEntries(Object.entries(obj).map(([a, b]) => [b, a]));
// 使用案例
const cityCode = { 北京: '010', 上海: '021' }
flipObject(cityCode)['021'] // 这样就能反着查值了,哈哈
这个其实还挺实用,虽然速度回慢一点,但只有上了几十万键才会有区别,没那么夸张,简单干净为王。
然后是数字前置补零。这个在时间、订单、文件名、工号生成、目录 等等等业务里面,都会高频用到。
const fillZero = (n = 0, fixLen = 2) => n.toString().padStart(fixLen, '0');
// 案例
const hour = 8;
const minute = 5;
console.log(fillZero(hour) + ':' + fillZero(minute)); // 08:05
这个大家收藏一下。
还有一个,就是【一键复制代码】,不再多说。
const copyToClipboard = async (content = '') => {
try {
await navigator.clipboard.writeText(content);
return true;
} catch {
return false;
}
};
// 使用案例
copyToClipboard('这是要复制的内容')
.then(success => {
if (success) console.log('复制成功');
else console.log('复制失败,浏览器未授权或环境不支持');
});
还有一个经典的,超级好用的,最稳定的 打乱算法(Fisher‑Yates 洗牌算法):
const randomSortList = (sourceList) => {
const tempArr = [...sourceList];
for (let i = tempArr.length - 1; i > 0; i--) {
const randomIndex = Math.floor(Math.random() * (i + 1));
[tempArr[i], tempArr[randomIndex]] = [tempArr[randomIndex], tempArr[i]];
}
return tempArr;
};
// 使用案例
const data = [1, 2, 3, 4, 5];
console.log(randomSortList(data)); // 打乱了
// 以前你可能这样写 打乱算法
// 这个超级难用,容易被客户投诉
const shuffleArray = (arr) => arr.sort(() => 0.5 - Math.random());
这个算法,是最均匀和公平的,不会出现局部扎堆问题。比 AI 直接原生写的打乱算法质量高多了,我以前做抽奖程序时用过,最后还是这个最好用。