jQuery.now()不是唯一的
jQuery .now() not unique
我有一个jsfiddle。
obj = {};
obj[0] = 'hej';
obj[1] = 'hopp';
$.each( obj, function( key, value ) {
console.log($.now());
});
$.now()
在控制台中是相同的数字。
如何生成唯一的数字?
您可以有一个计数器,为每个对象递增。然后,您可以将此计数器添加到$.now()中,以确保它是唯一的:
obj = {};
obj[0] = 'hej';
obj[1] = 'hopp';
counter=1;
$.each( obj, function( key, value ) {
console.log($.now() + counter);
counter+=1;
});
jquery-api:报价
$.now()方法是expression(new Date).getTime().
所以你基本上使用new Date().getTime()
。但是getTime()并不准确。。。本文中的相互关联引用:
实际上,这些浏览器只是在更新其内部getTime每15毫秒表示一次。这意味着如果你尝试要查询更新的时间,它总是四舍五入到最后计时器更新的时间(平均而言,大约7.5毫秒前)。
简而言之:getTime()
(在某些浏览器中)并不那么准确。
当你需要一个随机数时(正如你所做的),使用:
var randomVal = Math.random(); // e.g. 0.6137274974025786
var randomValI = Math.round(Math.random()*100000000000000000) // e.g. 6137274974025786
当你需要一个更正式的"guid"时,可以使用这样的东西:
function createGUID() {
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
// then to call it, plus stitch in '4' in the third group
return (S4() + S4() + "-" + S4() + "-4" + S4().substr(0,3) + "-" + S4() + "-" + S4() + S4() + S4()).toLowerCase();
}
var guid = createGUID();
jQuery.now()
不应该给你一个唯一的数字,只是一个"代表当前时间的数字"(http://api.jquery.com/jQuery.now/)。更具体地说,"自1970年1月1日00:00:00 UTC以来的毫秒数"(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)。
生成唯一标识符的最简单方法取决于标识符必须在其中唯一的范围
1:如果标识符在函数范围内必须是唯一的,那么StevenP建议的计数器可能会做得最好。
2:如果标识符需要在您的应用程序范围内是唯一的,并且您不可能跟踪分配的标识符(如1所示),那么您的工作将更加困难。在实际应用中,这种情况可以通过将时间戳与随机数相结合来解决,就像一样
var identifier = $.now() + "_" + Math.round(Math.random() * 1e10)
这种方法不能保证identifier
的真正唯一性,因为Math.round(Math.random() * 1e10)
可以在一毫秒内返回两次相同的值。根据你生成这样一个字符串的频率,你不太可能两次使用同一个字符串。
3:然而,如果你的目标是"跨越空间和时间的独特性",你可以从中获得灵感http://www.ietf.org/rfc/rfc4122.txt
需要注意的是,像在Javascript中创建GUID:UUID这样的纯Javascript实现?也只能使用随机数,因此不会生成真正的唯一标识符。对于跨越空间和时间的真正唯一标识符,必须使用确实的唯一元素(如mac地址)作为标识符的一部分。
当然$.now
只显示当前时间戳。要获得随机数,请使用Math.random()
- 使用onkeyup JS事件检查输入的值是否唯一
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- Lodash映射并返回唯一
- 在数据库中循环值时,为输入框获取唯一值
- 如何从数组中查找唯一对象
- 正在为循环创建唯一id
- 获取唯一值并使用javascript计算金额总和
- JavaScript:从对象数组中获取唯一值及其计数
- ng重复中的ng模型-初始化唯一作用域属性
- 返回值+new Date()与Date.now()是否不同
- 生成唯一的ids js
- 创建具有2个唯一数字的Javascript数组
- 对中的函数调用进行排序是回调的唯一方法
- 如何在传单.js中显示每个choropleth弹出窗口的唯一名称和URL
- 在JavaScript中创建全局唯一ID
- 为dropdownlistfor(MVC)中的每个元素设置唯一id
- JavaScript-用唯一属性标识对象
- 动态创建唯一的复选框
- 如何为动态创建的元素分配唯一的id-Javascript
- jQuery.now()不是唯一的