首页 > web前端 > js教程 > 如何在 JavaScript 中计算多个数组的笛卡尔积?

如何在 JavaScript 中计算多个数组的笛卡尔积?

Barbara Streisand
发布: 2024-12-21 11:28:10
原创
121 人浏览过

How to Calculate the Cartesian Product of Multiple Arrays in JavaScript?

JavaScript 中多个数组的笛卡尔积

笛卡尔积简介

在数学中,多个集合的笛卡尔积是所有可能的集合这些集合中元素的有序组合。例如,集合 [1, 2] 和 [10, 20, 300] 的笛卡尔积为 { [1, 10], [1, 20], [1, 300], [2, 10], [2, 20], [2, 300] }.

实施JavaScript

1 行 JavaScript 解决方案(2020 更新)

利用现代 JavaScript 功能的强大功能,这里有一个超简洁的解决方案,只需一行:

const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));
登录后复制

2 行普通 JavaScript解决方案

在 2020 年更新之前,这是最短的普通 JavaScript 解决方案:

let f = (a, b) => [].concat(...a.map(a => b.map(b => [].concat(a, b))));
let cartesian = (a, b, ...c) => b ? cartesian(f(a, b), ...c) : a;
登录后复制

示例用法

考虑输入数组:

input = [1, 2], [10, 20], [100, 200, 300]
登录后复制

为了计算笛卡尔积,我们可以调用笛卡尔函数函数:

const output = cartesian(...input);
登录后复制

输出变量将包含预期的笛卡尔积:

[[1, 10, 100], [1, 10, 200], [1, 10, 300], [1, 20, 100], [1, 20, 200], [1, 20, 300], [2, 10, 100], [2, 10, 200], [2, 10, 300], [2, 20, 100], [2, 20, 200], [2, 20, 300]]
登录后复制

以上是如何在 JavaScript 中计算多个数组的笛卡尔积?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板