生成方法

JeremyJone ... 2023-7-13 小于 1 分钟

# 生成方法

一些生成、创建的方法。

# 生成 uuid

/**
 * 生成uuid
 * @param {Number} len 指定uuid的长度
 * @param {Number} radix 进制,默认16进制
 */
function uuid(len, radix = 16) {
  const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
  const uuid = [];
  let i;
  radix = radix || chars.length;

  if (len) {
    for (i = 0; i < len; i++) {
      uuid[i] = chars[0 | (Math.random() * radix)];
    }
  } else {
    let r;
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-";
    uuid[14] = "4";

    for (i = 0; i < 36; i++) {
      if (!uuid[i]) {
        r = 0 | (Math.random() * 16);
        uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r];
      }
    }
  }

  return uuid.join("");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 生成指定范围内的随机数

export const random = (min, max) => {
  if (arguments.length === 2) {
    return Math.floor(min + Math.random() * (max + 1 - min));
  } else {
    return null;
  }
};
1
2
3
4
5
6
7

# base64 转 文件

// base64 转文件
export function base64toFile(base64) {
  const arr = base64.split(",");
  const mime = arr[0].match(/:(.*?);/)?.[1] ?? "";
  const ext = mime.split("/")?.[1] ?? "";
  const bstr = atob(arr?.[1] ?? "");
  let n = bstr.length;
  const u8arr = new Uint8Array(n);
  const name = `${new Date().getTime()}.${ext}`;

  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], name, { type: mime });
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15