使用javascript回显4随机数组元素[重复]
Posted
技术标签:
【中文标题】使用javascript回显4随机数组元素[重复]【英文标题】:Echo 4 random element of array using javascript [duplicate] 【发布时间】: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 ) ];);
`
【参考方案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://***.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)];
【讨论】:
以上是关于使用javascript回显4随机数组元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章
具有 10 个元素的随机布尔数组,其中 10 个元素中有 3 个为真 [重复]
用于确定数组元素是不是已存在的Javascript函数[重复]