用JavaScript方法实现随机选数据的七种方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
   <script>
       /*  var arr= ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"];
        var newarr=[];
        function getRandom(min,max){
            return Math.floor(Math.random()*(max-min+1))+min;
        }
        function select(data,arr){
            var flag=false;
            for(i=0;i<arr.length;i++){
                if(data==arr[i]){
                    flag=true;
                }
            }
            return flag;
        }
         do{
             var index=getRandom(0,arr.length-1);
             if(select(arr[index],newarr)==false){
                 newarr[newarr.length]=arr[index];
             }
         } while(newarr.length!=4);
         console.log(newarr); */

   /*       function roa(arr) {
    var temp=[];    
   var count=arr.length;    
    for (i=0;i<count;i++)
    { 
        var num=Math.floor(Math.random()*arr.length); 
        temp.push(arr[num]);   
        arr.splice(num,1);    
    }
    return temp;
}
 console.log(roa([1,5,7,4,8,6])); */

 /* var arr = [0,1,2,3,4,5,6,7,8,9];
		    var out = [];
		    var num = 5;
		while(out.length < num){
		     var temp = (Math.random()*arr.length);
		     out.push(arr.splice(temp,1));
		 }
       alert(out) */

  /*      function random(len, start, end) {
  var arr = [];
  function creat(start, end) {
    var numlen= end - start;
    return parseInt(Math.random() * numlen+ start)
  }
  while (arr.length < len) {
    var num = creat(start, end);
      if (arr.indexOf(num) == -1) {
        arr.push(num);
      }
  }
    return arr;
}
console.log(random(4,0,100)); */

/* function getArrayItems(arr, num) {
            //新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
            var temp_array = new Array();
            for (var index in arr) {
                temp_array.push(arr[index]);
            }
            //取出的数值项,保存在此数组
            var return_array = new Array();
            for (var i = 0; i<num; i++) {
                //判断如果数组还有可以取出的元素,以防下标越界
                if (temp_array.length>0) {
                    //在数组中产生一个随机索引
                    var arrIndex = Math.floor(Math.random()*temp_array.length);
                    //将此随机索引的对应的数组元素值复制出来
                    return_array[i] = temp_array[arrIndex];
                    //然后删掉此索引的数组元素,这时候temp_array变为新的数组
                    temp_array.splice(arrIndex, 1);
                } else {
                    //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
                    break;
                }
            }
            return return_array;
        }
        
        //测试
        var ArrList=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];
        alert(getArrayItems(ArrList,6)); */

      /*   function getRandomArrayElements(arr, count) {
      var shuffled = arr.slice(0), i = arr.length, min = i - count; 
       while (i-- > min) {
       var index = Math.floor((i + 1) * Math.random());
       var temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(min);
}


var items =  ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"];
console.log( getRandomArrayElements(items, 4) ); */

/* function RandomNumBoth(arr, maxNum) {
		var numArr = [];
		var arrLength = arr.length;
		for (var i = 0; i < arrLength; i++) {
		var number = Math.floor(Math.random() * arr.length); 
		numArr.push(arr[number]); //
		arr.splice(number, 1); //
		if (arr.length <= arrLength - maxNum) {
				return numArr;
			}
		}
	}
    var arr=["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"];
     console.log(RandomNumBoth(arr,4)); */
   </script>
</head>
<body>
    
</body>
</html>

版权声明:本文为dreamgetting原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。