javascript将一个数组分割成块并填充另一个数组
(场景)我有一个包含N个动物的数组,我必须在6天内每天以4到5的范围进行分发。因此,整个星期的范围可以是28=>30 axample:javascript将一个数组分割成块并填充另一个数组,javascript,Javascript,(场景)我有一个包含N个动物的数组,我必须在6天内每天以4到5的范围进行分发。因此,整个星期的范围可以是28=>30 axample: var animals = ["Antelope", "Bisont", "Crocodile", "Dingo","Elephant","Fly","Gnu","Hyena","Porcupine","Llama","Macaque","Nasica","Orangutan","Piton","Quetzal","Rinho"]; 动物=16,最小动物请求=
var animals = ["Antelope", "Bisont", "Crocodile", "Dingo","Elephant","Fly","Gnu","Hyena","Porcupine","Llama","Macaque","Nasica","Orangutan","Piton","Quetzal","Rinho"];
动物=16,最小动物请求=28
下面的代码片段解决了两个问题:
块作为
和
随机化为:
我需要将groupsize变量从固定值改进为范围值
var animals = ["Antelope", "Bisont", "Crocodile", "Dinosaur","Elephant","Fly","Gnu",
"Hyena","Porcupine","Llama","Macaque","Nasica","Orangutan","Piton","Quetzal","Rinho"];
var groupSize = 4; // here need range
var groups = _.map(animals, function(item, index){
return index % groupSize === 0 ? animals.slice(index, index + groupSize) : null;
})
.filter(function(item){ return item;
});
function shuffle(array) {
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element…
i = Math.floor(Math.random() * m-- );
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
console.log(shuffle(groups));
控制台
[["Porcupine", "Llama", "Macaque", "Nasica"], ["Antelope", "Bisont", "Crocodile", "Dinosaur"], ["Elephant", "Fly", "Gnu", "Hyena"], ["Orangutan", "Piton", "Quetzal", "Rinho"]]
chunk和shuffle都不错,但至少需要6个,并且有4个。对于这两个角色,一些动物必须做第二个回合
所以问题是:我如何用至少4只洗牌动物的块填充数组[6]?任何关于找到正确路径的建议都会得到广泛的赞赏