为传入数据数组生成唯一的div

时间:2016-07-01 20:00:29

标签: javascript html arrays guid

我有一堆来自外部来源的数据。

此数据以关联数组的形式出现。键是一个名为version的值,数据是JSON对象。版本密钥可能包含任何字符。

我希望能够为数组中的每个键生成单独的Div。我尝试使用以下函数删除非字母数字字符

var sanitizeVersionName = function(version) {
    var prefixed = 'v' + version;
    return prefixed.replace(/^[^a-z]+|[^\w:.-]+/gi, '');
};

然后使用结果作为div的ID。问题是,如果我的数组包含"11等版本,那么上面的函数会为两者返回相同的值。

有没有办法在我的数组中为每个版本密钥分配一个具有全局唯一ID的div?

1 个答案:

答案 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;
}