«

分享几个短小精悍实用的 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 直接原生写的打乱算法质量高多了,我以前做抽奖程序时用过,最后还是这个最好用。

标签: 原创 JS