正在为循环创建唯一id
Creating unique id in for loop
我应该提到,这将进入数据库,因此它确实需要是唯一的。在进入数据库之前,我需要定义id。
for (var i = 0; i < obj.length; i++) {
var id = Date.now();
console.log(id);
}
问题是,这是输出:
1428356251606
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
1428356251607
...
我曾想过使用Math.random()
,但以所有挪威神的名义,它可能会两次击中同一个数字。
你知道如何在保持for循环速度的同时使其真正独特吗?
您应该使用i
。保证i
对于循环的每次迭代都是唯一的。
根据您希望ID的唯一性持续多久,您可以在ID中添加另一种唯一的化合物(Date.now()
是一个很好的候选者,因为它保证在不同时间在同一台机器上的不同运行中是唯一的)。
怎么样
var id = Date.now();
for (var i = 0; i < obj.length; i++) {
console.log(id+i);
}
您可以强制迭代,直到ID重复
var lastGenerated = 0;
var id = 0;
for (var i = 0; i < obj.length; i++) {
do{
id = Date.now();
}while(lastGenerated == id);
lastGenerated = id;
console.log(id);
}
或者你可以像下面这样制作
var seed = Date.now() * 1000;
for (var i = 0; i < obj.length; i++) {
var id = seed + i;
console.log(id);
}
一个好的解决方案是创建一个对象来管理id。。。
(function(w){
var __id = Date.now();
function ID(){ }
ID.prototype.next = function(){
return ++__id;
};
w.ID = new ID();
}(window));
for(var i = 0; i < obj.length; i++){
var id = ID.next();
console.log(id);
}
相关文章:
- 正在为循环创建唯一id
- 在JavaScript中创建全局唯一ID
- 为dropdownlistfor(MVC)中的每个元素设置唯一id
- 向具有唯一Id的表添加/删除行
- 基于唯一ID合并geojson
- 如何为使用 jQuery 动态生成的按钮提供唯一 ID
- 类似系统:循环形成唯一id,得到这些id'使用jQuery/Javascript单独发布
- Knockout.js中使用的唯一ID;对于“;单选按钮组中的标签属性
- 在所有页面中搜索<身体>具有唯一ID
- 如何从多个唯一id中获取值
- 为客户端和服务器上的对象生成唯一 ID
- 如何使用jQuery创建具有唯一ID的可重复表
- 在 Firebase 中通过对象的唯一 id 查找对象
- 如何将唯一 ID 添加到 Javascript 中动态创建的输入字段
- 页面上第二个表单所需的唯一 id 属性
- 克隆并附加唯一 ID 后找不到 DOM 元素
- 如何在 append() 上添加具有唯一 id 的编辑按钮
- Chrome 标签页的永久唯一 ID,在浏览器会话之间持续存在
- 跨多个客户端和服务器生成真正的全局唯一 ID
- 如何通过 php 中的唯一 ID 删除 Json