随机播放一个数组并用javascript中的GUID替换它的键

时间:2011-08-02 09:51:46

标签: javascript

我想将数组洗牌并将密钥更改为唯一标识符。

到目前为止,这是我在互联网上发现的一些功能的混合。

QuestionSet.prototype.obfusicate = function(data) {
    var o = {};
    util.list(['question', 'answer'], data, o);

    for (var n = 0; n < o.answer.length - 1; n++) {
        var k = n + Math.floor(Math.random() * (o.answer.length - n));
        var temp = o.answer[k];
        o.answer[k] = o.answer[n];
        o.answer[n] = temp;
    }

    // generate a unique id for the key

    return {
        correct: this.guid(), //actually store the first unique id
        question: [o.question, o.answer]
    };
};

QuestionSet.prototype.guid = function() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
        return v.toString(16);
    });
}

到目前为止,我的计划是在shuffle之后引入另一个for(x in o.answers)循环,并将其作为一个关联数组,GUID充当键。但是我确信有一个更优雅的解决方案,我现在无法想出来。

0 个答案:

没有答案