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();
输出
[13,G,8,F]
[13,G,36,P]
[16,C,8,F]
[16,C,36,P]
方法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();
输出
[13,G,8,F]
[13,G,36,P]
[16,C,8,F]
[16,C,36,P]
极客教程