我有大量来自外部来源的数据。
该数据以关联数组的形式出现。键是一个名为 version
的值,数据是一个 JSON 对象。版本 key 中可能包含任何字符。
我希望能够为数组中的每个键生成一个单独的 Div
。我尝试使用以下函数删除非字母数字字符
var sanitizeVersionName = function(version) {
var prefixed = 'v' + version;
return prefixed.replace(/^[^a-z]+|[^\w:.-]+/gi, '');
};
然后使用结果作为 div 的 ID。问题是,如果我的数组包含 "1
和 1
等版本,则上述函数将为两者返回相同的值。
有没有办法为我的数组中的每个版本键分配一个具有全局唯一 ID 的 div?
最佳答案
您无需从 ID 中删除 [a-z\w]
。 Div id 只需要以 [a-zA-Z]
开头,但可以包含数字、连字符和下划线。
如果有与数据关联的日期,您可以使用该日期:
var myDate = new Date('06-03-2014 9:34:03');
prefixed += myDate.getTime();
虽然在循环中一个接一个地生成新日期是行不通的,但会出现欺骗行为。
您还可以使用 token 生成器函数,尽管不能保证它是全局唯一的,但几乎不可能,长度为 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;
}
关于javascript - 为传入数据数组生成唯一的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153144/