笛卡爾積:在JavaScript 中生成數組值的組合
問題描述:
給定任意數量的JavaScript 數組,我們如何計算它們元素的笛卡爾積,有效地產生它們值的所有可能組合?
解:
雖然這個問題可能類似於排列,它是涉及笛卡爾積的經典任務。使用遞歸,我們可以實現演算法來實現此目的:
定義陣列的輸入清單:
<code class="js">var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];</code>
建立遞歸PossibleCases函數:
<code class="js">function allPossibleCases(arr) { if (arr.length === 1) { return arr[0]; } else { var result = []; var allCasesOfRest = allPossibleCases(arr.slice(1)); // recur with the rest of array for (var i = 0; i < arr[0].length; i++) { for (var j = 0; j < allCasesOfRest.length; j++) { result.push(arr[0][i] + allCasesOfRest[j]); } } return result; } }</code>
使用陣列的輸入清單實例化allPossibleCases 函數並列印結果:
console.log(allPossibleCases(allArrays));
["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]
以上是如何在 JavaScript 中產生數組值的所有可能組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!