我有一个网格,可以在其中添加或删除数据。要添加,我有此方法
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?
答案 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)
}