我有一堆来自外部来源的数据。
此数据以关联数组的形式出现。键是一个名为version
的值,数据是JSON对象。版本密钥可能包含任何字符。
我希望能够为数组中的每个键生成单独的Div
。我尝试使用以下函数删除非字母数字字符
var sanitizeVersionName = function(version) {
var prefixed = 'v' + version;
return prefixed.replace(/^[^a-z]+|[^\w:.-]+/gi, '');
};
然后使用结果作为div的ID。问题是,如果我的数组包含"1
和1
等版本,那么上面的函数会为两者返回相同的值。
有没有办法在我的数组中为每个版本密钥分配一个具有全局唯一ID的div?
答案 0 :(得分:1)
您无需从您的ID中删除[a-z\w]
。 Div id只需要以[a-zA-Z]
开头,但可以有数字,连字符和下划线。
如果有与数据关联的日期,您可以使用:
var myDate = new Date('06-03-2014 9:34:03');
prefixed += myDate.getTime();
在循环中一个接一个地生成新日期虽然不起作用,但会有傻瓜。
您也可以使用令牌生成器功能,虽然它不能保证全局唯一,但它几乎不可能存在,长度为16个字符。
function makeToken(len) {
var characters = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var string = '';
for (var i = 0; i < len; i++) {
var x = Math.round(Math.random() * characters.length);
string += characters.substr(x, 1);
}
return string;
}