在实际开发过程中,类似于试题之类的数据列表,产品往往希望所有人的试题和答案顺序都尽量是不同的,这时候就需要我们对数据列表进行处理:

思想:首先我们要先找出一个所有人都有又不同的参数,这个很明显用户id就是,然后根据用户id设计一个简单的算法即可得到乱序之后的数据列表;

示例:

 

 
outOfOrderDispatch: function (data,randomNumber) {//randomNumber为uid时即可实现目的
var originDate = data;
var newData = [];
var _length = originDate.length;
var _randomNumber = parseInt(randomNumber) || parseInt(Math.random()*100000);
  //以原数组的长度为新数组填充空值
for(var i=0;i<_length;i++){
newData.push("");
}
  //通过随机的算法获得新的索引填入新的数组,如果已存在则向后顺推
for(var j=0;j<_length;j++){
var newIndex = Math.ceil(Math.abs(Math.sin(j+_randomNumber))*100)%_length;
isTrue(j,newIndex);
}
function isTrue(currentIndex,index) {
if(!!newData[index]){
index++;
if(index >= _length){
index = 0;
}
arguments.callee(currentIndex,index);
}else {
newData[index] = (originDate[currentIndex]);
}
}
return newData;
}
   
posted on 2016-08-25 10:00  理货宝  阅读(416)  评论(0编辑  收藏  举报