调用
let listArr=utils.randomArray([
{data:data.brand,num:2},
{data:data.wrong,num:2},
{data:data.nous,num:2},
{data:data.prevent,num:4}
]);
1.取出数据,会改变原来数据
//筛选 随机不重复数据
/*
*
* @arr 数组
@num 取出个数
*/
const randomArray= (arr) =>{
//准备一个空空组 贮存数据
let numArr=[];
// console.log(arr,"数据类型对应数据");
arr.forEach(function(item,i){
getRand(item.data,item.num);
})
//随机取出不重复得数据
function getRand(typeData,num){
let itemData=typeData;
let arrLength=itemData.length;
for(let i=0;i<arrLength;i++){
let len=itemData.length-1;
let number = Math.floor(Math.random()*len); //生成随机数0-len之间的整数 len得提前减1
numArr.push(itemData[number]);
//数组截取掉,避免重复
itemData.splice(number,1);
// console.log(itemData);
// console.log(3333);
// return;
console.log(itemData.length,arrLength-num);
if(itemData.length<=arrLength-num){
console.log(itemData,typeData,"完成");
break;
}
}
}
}
2.不改变原来数据
//随机取出 不重复的数据 多个
const randomArray = (arr) =>{
var numArr=[];
//取出指定数量不重复 随机数
function rad(num,length,s,callback){
//随机数
let number = Math.floor(Math.random()*length); //生成随机数0-len之间的整数 len得提前减1
//检查随机数是否出现过
if(s.indexOf(number)==-1){
s.push(number);
num--;
// console.log(num,"index");
if(num==0){
callback(s);
}else{
rad(num,length,s,callback);
}
}else{
rad(num,length,s,callback);
}
}
//遍历
arr.forEach(function(item,i){
getRand(item.data,item.num);
})
function getRand(typeData,num){
//初始化数组
let s=[];
//遍历随机数 添加数据值
rad(num,typeData.length,s,function(res){
res.forEach(function(item,i){
numArr.push(typeData[item]);
})
});
}
return numArr;
}