笛卡尔积:在 JavaScript 中生成数组值的组合
问题描述:
给定任意数量的 JavaScript 数组,我们如何计算它们元素的笛卡尔积,有效地生成它们值的所有可能组合?
解决方案:
虽然这个问题可能类似于排列,它是涉及笛卡尔积的经典任务。使用递归,我们可以实现一种算法来实现此目的:
定义数组的输入列表:
<code class="js">var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];</code>
创建递归 allPossibleCases函数:
<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中文网其他相关文章!