JavaScript 如何计算两个数组的笛卡尔积

JavaScript 如何计算两个数组的笛卡尔积

任务是使用JavaScript计算两个JavaScript数组的笛卡尔积。以下是几种讨论的技巧。

方法1

  • 创建一个新数组。
  • 通过外部循环遍历第一个数组,通过内部循环遍历第二个数组。
  • 在内部循环中,将第一个数组元素与第二个数组元素连接起来,然后将其推入新数组。

示例: 此示例实现了上述方法。

const arr1 = [
    [13, 'G'],
    [16, 'C']
];
 
const arr2 = [
    [8, 'F'],
    [36, 'P']
];
 
let res = "";
 
function CartesianProduct() {
    let ans = [];
    for (let i = 0; i < arr1.length; i++) {
        for (let j = 0; j < arr2.length; j++) {
            ans.push(arr1[i].concat(arr2[j]));
        }
    }
 
    res = "";
     
    for (let i = 0; i < ans.length; i++) {
        res = res + "[" + ans[i] + "]\n";
    }
    console.log(res);
}
 
CartesianProduct();
JavaScript

输出

[13,G,8,F]
[13,G,36,P]
[16,C,8,F]
[16,C,36,P]
JavaScript

方法2

  • 创建一个新数组。
  • 这里采用相同的方法,对于第一个数组的每个元素,将第二个数组的每个元素进行拼接,并通过 apply() map()方法将其推到新数组中。

示例: 这个示例实现了上面的方法。

const arr1 = [
    [13, 'G'],
    [16, 'C']
];
 
const arr2 = [
    [8, 'F'],
    [36, 'P']
];
 
let res = "";
 
function CartesianProduct() {
    let ans = [].concat.apply([], arr1.map(
        arr1 => (arr2.map(arr2 => arr1.concat(arr2)))));
 
    res = "";
 
    for (let i = 0; i < ans.length; i++) {
        res = res + "[" + ans[i] + "]\n";
    }
    console.log(res);
}
 
CartesianProduct();
JavaScript

输出

[13,G,8,F]
[13,G,36,P]
[16,C,8,F]
[16,C,36,P]
JavaScript

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册