js随机从几个值数组内取出一个值或者多个值!

首先我们定义数组!

var items = ['10','20','30','40'];

然后我们取出一个值

var shaqunzhu=items[Math.floor(Math.random()*items.length)];
console.log(shaqunzhu);

或者我们也可以取出多个值!

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


var items = ['1','2','4','5','6','7','8','9','10'];
console.log(getRandomArrayElements(items, 4) );

里面涉及到随机数的观点!

b = Math.ceil(Math.random()*10);

Math.random()是随机0-1的随机数!

Math.ceil是大于等于里面数的一个整数!

其他参考

常规算法

   **/
      function getArrItem(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.splice(arrIndex, 1);
              } else {
                  break;
              }
          }
          return return_array;
      }

洗牌的算法

/**
            随机化原数组
        **/
        function shuffle(array) {
            var m = array.length,
                t, i;
            // 如果还剩有元素…
            while (m) {
                // 随机选取一个元素…
                i = Math.floor(Math.random() * m--);
                // 与当前元素进行交换
                t = array[m];
                array[m] = array[i];
                array[i] = t;
            }
            return array;
        }
 
//用法
var message = shuffle(totalArr);
message = message.slice(0, 3);

根据提供数值算出结果的!

function getNumber(count){
var init = 20;
var num = "0%";
var count = count ? count : parseInt(Math.random()*(120-30)+30);
return num = count >= 120 ? "90%" : (count-init).toString().slice(0,1)+"0%";
}


写的好!

微信扫一扫赏大洋