diff --git a/rules/utils/cartesian-product-samples.js b/rules/utils/cartesian-product-samples.js index 916386e213..6b5558234f 100644 --- a/rules/utils/cartesian-product-samples.js +++ b/rules/utils/cartesian-product-samples.js @@ -14,12 +14,16 @@ module.exports = (combinations, length = Infinity) => { const samples = Array.from({length: Math.min(total, length)}, (_, sampleIndex) => { let indexRemaining = sampleIndex; - return combinations.reduceRight((combination, items) => { + let combination = []; + for (let i = combinations.length - 1; i >= 0; i-- ) { + const items = combinations[i]; const {length} = items; const index = indexRemaining % length; indexRemaining = (indexRemaining - index) / length; - return [items[index], ...combination]; - }, []); + combination.unshift(items[index]); + } + + return combination; }); return {