【问题标题】:Echo 4 random element of array using javascript [duplicate]使用javascript回显4随机数组元素[重复]
【发布时间】:2013-11-24 08:16:45
【问题描述】:

我有数组

var arr = ['elem1', 'elem2', 'elem3', 'elem4', 'elem5', 'elem6', 'elem7', 'elem8'];

如何使用 javascript 回显其中的 4 个随机元素?

【问题讨论】:

  • 唯一或非唯一随机元素?
  • How to get random elements from an array 的重复可能是Getting random value from an array 的重复 - 请注意您在询问时得到的建议
  • 这是我需要的: arr.sort(function() { return 0.5 - Math.random() } ); for (var i=0;i
  • 另一种技术Array.apply( null , new Array(4) ).map( function( v ){ return arr[Math.floor( Math.random( ) * arr.length ) ];});`

标签: javascript arrays random


【解决方案1】:

如果你想要不同的元素,你可以从数组中一次提取一个

function extractRandomElement(arr) {
  var index = Math.floor(Math.random() * arr.length);
  return arr.splice(index, 1)[0];
}

var arr = ['elem1', 'elem2', 'elem3', 'elem4', 'elem5', 'elem6', 'elem7', 'elem8'];
var arrCopy = arr.slice(0); // copy the array so the original is unchanged
var result = [];
var N = 4;

for (var i=0; i<N; i++) {
  result.push(extractRandomElement(arrCopy));
}

console.log(result);

另一种方法是打乱(随机排序)数组,然后获取前 4 个元素:

var arr = ['elem1', 'elem2', 'elem3', 'elem4', 'elem5', 'elem6', 'elem7', 'elem8'];
var arrCopy = arr.slice(0); // copy the array so the original is unchanged
var N = 4;

var result = arrCopy.sort(function(){ return Math.random()-0.5; }).slice(N);

console.log(result);

来自一个重复这个问题的问题的答案非常好: https://stackoverflow.com/a/7159251/1669279

是对上面第一种方法的改进:

function extractRandomElement(arr) {
  var index = Math.floor(Math.random() * arr.length);
  var retVal = arr[index];
  arr[index] = arr.pop();
  return retVal;
}

【讨论】:

    【解决方案2】:

    您可以使用以下代码获取随机元素:

    arr[Math.floor(Math.random() * arr.length)];
    

    【讨论】:

      【解决方案3】:

      这个呢:

      var arr = ['elem1', 'elem2', 'elem3', 'elem4', 'elem5', 'elem6', 'elem7', 'elem8'];
      
      arrLength = arr.length;
      
      var randomNummer = Math.floor(Math.random()*arrLength);
      
      alert(arr[randomNummer]);
      

      jsFiddle

      【讨论】:

        【解决方案4】:

        如果您尝试获取该数组的 4 个唯一元素,则应始终删除随机检索到的元素:

        var arr = ['elem1', 'elem2', 'elem3', 'elem4', 'elem5', 'elem6', 'elem7', 'elem8'],
            random_values = [];
        
        for (var i = 0; i < 4; i++ ) {
            var length = arr.length,
                random = Math.floor(Math.random()*length+1);
        
            random_values.push(arr[random]);
        
            // Remove the already selected element from the arr array
            arr.splice(random, 1);
        }
        
        console.log(random_values);
        

        【讨论】:

          【解决方案5】:

          您可以使用下面的代码来获得一个 4 个随机元素:

          var element1 = arr[Math.floor(Math.random()  * arr.length)];
          var element2 = arr[Math.floor(Math.random()  * arr.length)];
          var element3 = arr[Math.floor(Math.random()  * arr.length)];
          var element4 = arr[Math.floor(Math.random()  * arr.length)];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-16
            • 1970-01-01
            • 2012-01-23
            • 2016-04-27
            • 2018-08-09
            • 1970-01-01
            相关资源
            最近更新 更多