首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Angular中生成UUID

如何在Angular中生成UUID
EN

Stack Overflow用户
提问于 2018-10-16 21:11:27
回答 2查看 99.8K关注 0票数 38

如何在Angular中生成UUID?

我尝试了https://www.npmjs.com/package/uuid-generator-tshttps://www.npmjs.com/package/@types/uuid包。但是我得到了一个错误,如果我安装这些包,

EN

回答 2

Stack Overflow用户

发布于 2020-02-03 16:29:33

以@MrGrigri为例:如果你不想比较和保存数组中的随机数,你可以这样做,你不需要一个完整的npm包,并且可以控制你想要的4组的数量

代码语言:javascript
复制
/**
 * generate groups of 4 random characters
 * @example getUniqueId(1) : 607f
 * @example getUniqueId(2) : 95ca-361a-f8a1-1e73
 */
export function getUniqueId(parts: number): string {
  const stringArr = [];
  for(let i = 0; i< parts; i++){
    // tslint:disable-next-line:no-bitwise
    const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    stringArr.push(S4);
  }
  return stringArr.join('-');
}
票数 10
EN

Stack Overflow用户

发布于 2019-03-27 03:59:15

我知道这可能会对一些用户有所帮助。这就是我过去所做的。我已经创建了一个Angular ID Service,它跟踪我在整个项目中生成的所有ids。每次生成一个id时,都会对照所有其他id进行检查,以确保它是唯一的。有一个公共属性和两个公共方法。

记住

您必须在ngOnInit方法中生成一个新的id,并在ngOnDestroy方法中删除该id。如果在销毁组件时不能删除id,它们的id数组将变得非常大。

代码

ids: string[]:这是服务中存储的所有唯一in的列表,以确保唯一性。

generate(): string:此方法将以字符串的形式生成并返回唯一的id;输出:例如bec331aa-1566-1f59-1bf1-0a709be9a710

remove(id: string): void:此方法将从存储的id数组中删除给定的id。

代码语言:javascript
复制
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class IdService {
  public ids: string[] = [];

  constructor() {}

  public generate(): string {
    let isUnique = false;
    let tempId = '';

    while (!isUnique) {
      tempId = this.generator();
      if (!this.idExists(tempId)) {
        isUnique = true;
        this.ids.push(tempId);
      }
    }

    return tempId;
  }

  public remove(id: string): void {
    const index = this.ids.indexOf(id);
    this.ids.splice(index, 1);
  }

  private generator(): string {
    const isString = `${this.S4()}${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}${this.S4()}${this.S4()}`;

    return isString;
  }

  private idExists(id: string): boolean {
    return this.ids.includes(id);
  }

  private S4(): string {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52836247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档