首页  >  文章  >  web前端  >  如何生成 JavaScript 数组中值的所有组合(笛卡尔积)?

如何生成 JavaScript 数组中值的所有组合(笛卡尔积)?

Linda Hamilton
Linda Hamilton原创
2024-11-03 21:05:29342浏览

How to Generate All Combinations (Cartesian Product) of Values in JavaScript Arrays?

JavaScript 数组值的笛卡尔积

问题:

给定任意数量的 JavaScript不同长度的数组,确定其值的所有组合(笛卡尔积)。

解决方案:

可以使用递归有效地解决此任务。它涉及迭代每个数组并将其值与剩余数组的所有可能组合进行组合。

考虑以下实现:

function allPossibleCases(arr) {
  if (arr.length === 1) {
    return arr[0];
  } else {
    const result = [];
    const casesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of arr
    casesOfRest.forEach((c) => {
      for (let i = 0; i < arr[0].length; i++) {
        result.push(arr[0][i] + c);
      }
    });
    return result;
  }
}

用法:

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];
var results = allPossibleCases(allArrays); // outputs ["acd", "bcd", "azd", ...]

说明:

  • allPossibleCases 函数接受一组数组作为输入。
  • 如果输入数组只有一个子数组,它返回它的值。
  • 否则,它用剩余的子数组递归调用自身,并将每个子数组值与剩余子数组的所有可能组合组合起来。
  • 该函数迭代每个子数组并将其值与剩余数组中的每个组合连接起来,生成所有可能的组合。
  • 最终结果是一个字符串数组,其中包含输入数组中值的所有唯一组合。

以上是如何生成 JavaScript 数组中值的所有组合(笛卡尔积)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn