我想将数组洗牌并将密钥更改为唯一标识符。
到目前为止,这是我在互联网上发现的一些功能的混合。
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充当键。但是我确信有一个更优雅的解决方案,我现在无法想出来。