我有一个以下格式的数组,但在表单提交时,没有“ID”字段可用。我希望当用户提交表单时,应该给出一个自动生成的ID并保存在JSON数组中。在每个表单提交方法上,它应检查是否已经给出了ID。如果没有则分配。
private list :any;
this.list = {
"a_Rows": [
{
"id": "1",
"sname": "amir",
"sType": "Cheque",
"semail": "ert",
},
您可以使用以下代码
<button onclick="submit()">Submit</button>
submit() {
let s = (new Date()).getTime().toString(16) + Math.random().toString(16).substring(2) + "0".repeat(16);
let uuid = s.substr(0,8) + '-' + s.substr(8,4) + '-4000-8' + s.substr(12,3) + '-' + s.substr(15,12);
let data = {
id : uuid,
sname: "amir",
sType: "Cheque",
semail: "ert"
}
}
请看下面这个例子,我已经创建了一个你需要的函数,它将创建唯一的id并添加到json对象中,并且它具有所有相应的值。
let value = { 2071 : {id :101, name: "bathri" , age:22}}
let idIndex;
function CreateJson(name, age){
this.id = generateNewId();
this.name = name;
this.age = age;
return value[this.id] = this;
}
function generateNewId(){
idIndex = Math.floor(Math.random() * 9999) + 1;
if(Object.keys(value).includes(idIndex) == idIndex){
idIndex = generateNewId()
}
return idIndex;
}
let result = new CreateJson('nathan','23')
console.log(value);
编写生成随机ID的函数可确保JSON中的id字段在表单提交时包含值。如果id字段必须是唯一的,则需要获取所有id以检查唯一性。
你可以使用uuid作为你的id,保证是唯一的。或者(例如,如果你的id需要是整数)只需要一个全局计数器,你可以在每次提交时增加它,并将其用作新元素的id。
例:
items = [];
idCounter = 0;
function addItem(item) {
item.id = idCounter++;
items.push(item);
}