首頁 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板