在实际开发过程中,类似于试题之类的数据列表,产品往往希望所有人的试题和答案顺序都尽量是不同的,这时候就需要我们对数据列表进行处理:
思想:首先我们要先找出一个所有人都有又不同的参数,这个很明显用户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; }
|
|
|