如何创建唯一的ID

时间:2020-09-30 09:44:00

标签: javascript reactjs

我有一个网格,可以在其中添加或删除数据。要添加,我有此方法

  handelAddValueTransactionInput() {
                let valueTransaction = this.state.valueTransaction;
                valueTransaction.push({ id: valueTransaction.length + 1,Value:this.state.valueTransactionInput });

                this.setState({ valueTransaction, valueTransactionInput: '' })

            }
          

删除:

 deleteValueTransaction(data) {

        let indexOfDeleted = -1;
        let valueTransaction = this.state.valueTransaction;
        this.state.valueTransaction.forEach((item, index) => {
            if (item.id === data.id) {

                indexOfDeleted = index;

            }
        })
        valueTransaction.splice(indexOfDeleted, 1);

        this.setState({

            valueTransaction: valueTransaction

        });
    }

我的问题是,当我有3个数据并且删除第二个数据并添加一个数据两次时..添加的数据创建的ID与上一个数据相同

如何为每个对象创建唯一的ID?

3 个答案:

答案 0 :(得分:3)

您可以使用UUID

function create_UUID() {
  var dt = new Date().getTime();
  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = (dt + Math.random() * 16) % 16 | 0;
    dt = Math.floor(dt / 16);
    return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  });
  return uuid;
}
for (let i = 0; i < 10; i++)
  console.log(create_UUID());

答案 1 :(得分:1)

如果您想要一个随机字符串,请搜索“ JavaScript中的随机字符串生成器”,我现在没有打开它,但是另一个堆栈溢出问题上有这样的函数。答案之一提供了一个不错的函数,该函数可以返回随机字符串

答案 2 :(得分:1)

对于长度小于15的ID,您可以使用以下公式并将其组合为大字符串。

getRandomString = (length) => {
    return Math.random().toString(36).substring(2, length + 2)
}

相关问题