首頁 > web前端 > js教程 > 如何在 JavaScript 中產生數組值的所有可能組合?

如何在 JavaScript 中產生數組值的所有可能組合?

Linda Hamilton
發布: 2024-11-04 02:45:29
原創
247 人瀏覽過

How to Generate All Possible Combinations of Array Values in JavaScript?

笛卡爾積:在JavaScript 中生成數組值的組合

問題描述:

給定任意數量的JavaScript 數組,我們如何計算它們元素的笛卡爾積,有效地產生它們值的所有可能組合?

解:

雖然這個問題可能類似於排列,它是涉及笛卡爾積的經典任務。使用遞歸,我們可以實現演算法來實現此目的:

  1. 定義陣列的輸入清單:

    <code class="js">var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];</code>
    登入後複製
  2. 建立遞歸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>
    登入後複製
  3. 使用陣列的輸入清單實例化allPossibleCases 函數並列印結果:

    console.log(allPossibleCases(allArrays));
    登入後複製
此程式碼將以以下格式輸出輸入數組中值的所有可能組合:

此演算法有效地產生所提供的笛卡爾積數組,為創建其元素的詳盡組合的問題提供了解決方案。
["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]
登入後複製

以上是如何在 JavaScript 中產生數組值的所有可能組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板