J'ai besoin d'aide ici s'il vous plaît. J'essaie de diviser ce tableau en morceaux avec des longueurs entre une plage donnée p> donc le La taille du morceau peut être n'importe quoi entre sorties possibles: p>
Donc j'ai le tableau suivant: Minchunksize code> et maxchunksize code> généré aléatoirement. p> [[1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]
or
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
or
[[1, 2], [3, 4, 5, 6, 7], [8, 9, 10]]
or
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
etc...
3 Réponses :
Une fonction récursive fera le travail:
Ceci est un peu inefficace, mais vous pouvez créer une méthode récursive qui progressivement p> min code> et max code>) des éléments du déployer. Si le résultat final généré a .as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Ouais, est venu avec presque la même solution.
Même si ce n'est pas la solution la plus efficace, vous pouvez essayer de générer les morceaux et si le dernier élément est plus court que la valeur requise minimale, vous essayez de le générer à nouveau (récursivité) comme:
P>
const generate = (input, min, max) => {
const random = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
const inner = arr => {
if (arr.length === 0) return;
const minIndex = arr.length < min ? arr.length : min;;
const maxIndex = arr.length < max ? arr.length : max;
const splitIndex = random(minIndex, maxIndex);
const generatedArray = arr.slice(0, splitIndex);
const remainingArray = arr.slice(splitIndex);
if (remainingArray.length === 0) {
return [generatedArray];
} else {
return [generatedArray].concat(inner(remainingArray));
}
};
const result = inner(input);
return result.every(item => item.length >= min) ? result : generate(input, min, max);
};
console.log(
generate(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
2,
4,
)
);