在一个数组中,例如:
const myList = [['hi'], ['hello', 'bye'], ['ok'], ['blue', 'green', 'purple'], ['big', 'small', 'medium', 'orange', 'sky', 'ground', 'earth'], ['king', 'queen'], ['desk']]
如何获得数组中项目的随机样本,但总数应由输入变量确定size
。
因此,如果size = 3
, 将返回一个数组,例如
[['desk'], ['king', 'queen']]
或者可能
[['blue', 'green', 'purple']]
甚至
[['ok'], ['desk'], ['hi']]
如果size
大于扁平化 myList 中的项目数,则它应该只返回最大可用项目。
我一直无法弄清楚,这怎么办?
我建议您使用这样的函数对数组进行洗牌:
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
shuffled_arr = shuffle(shuffled_arr); // assign and shuffle the data to this arr
然后拉1个元素直到达到最大限制。
var shuffled_arr = shuffle(myList); // to shuffle the data
var results_arr = [];
var maximum_len = 3;
var current_len = 0;
for (let i = 0; i < shuffled_arr.length; i++)
{
if(current_len == maximum_len) break;
if(current_len + shuffled_arr[i].length <= maximum_len)
{
current_len+= shuffled_arr[i].length;
results_arr.push(shuffled_arr[i]);
}
}
最后,您拥有包含 X 个随机字符串的数组 results_arr。
你可以在这里查看我的小提琴 - https://jsfiddle.net/2ds4vxqp/干杯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句