📜  如何使用 JavaScript 对 2 个数组进行笛卡尔积?(1)

📅  最后修改于: 2023-12-03 15:23:52.876000             🧑  作者: Mango

使用 JavaScript 对 2 个数组进行笛卡尔积

笛卡尔积是指以多个集合中的所有元素所组成的所有可能的组合。在 JavaScript 中,我们可以使用嵌套循环或者数组内置方法来实现笛卡尔积。

使用嵌套循环实现

我们可以使用嵌套循环来遍历两个数组中的所有元素,并将所有可能的组合添加到新的数组中。下面是代码示例:

const arr1 = [1, 2];
const arr2 = ['a', 'b'];

const cartesianProduct = [];

for (let i = 0; i < arr1.length; i++) {
  for (let j = 0; j < arr2.length; j++) {
    cartesianProduct.push([arr1[i], arr2[j]]);
  }
}

console.log(cartesianProduct); // [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]

在上面的代码中,我们定义了两个数组 arr1arr2,然后创建一个新的数组 cartesianProduct 来保存笛卡尔积。接下来,我们使用两个嵌套循环来遍历 arr1arr2 中的元素。从而将所有可能的组合添加到 cartesianProduct 中。

使用数组内置方法实现

除了嵌套循环,我们还可以使用数组内置方法来实现笛卡尔积。该方法基于 Array.prototype.reduce()Array.prototype.map() 方法。下面是代码示例:

const arr1 = [1, 2];
const arr2 = ['a', 'b'];

const cartesianProduct = arr1.reduce((acc, item1) =>
  acc.concat(arr2.map((item2) => [item1, item2])),
  []
);

console.log(cartesianProduct); // [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]

在上面的代码中,我们使用 Array.prototype.reduce() 方法来遍历 arr1 中的元素。在每次遍历时,我们使用 Array.prototype.map() 方法来遍历 arr2 中的元素。从而将所有可能的组合添加到一个新的数组中。最后,我们将该数组作为 Array.prototype.reduce() 方法的返回值。

结论

以上介绍了如何使用 JavaScript 对两个数组进行笛卡尔积的两种方法:嵌套循环和数组内置方法。这些方法都很简单,但可以帮助我们快速有效地计算笛卡尔积。如果您有更多的集合,您可以通过嵌套循环的方式对多个集合进行笛卡尔积的计算。