計算 JavaScript 中多個數組的笛卡爾積


我們需要編寫一個 JavaScript 函式,它接受多個數字陣列。該函式應返回來自所有陣列中元素的笛卡爾積陣列。

例如 −

如果輸入陣列為 −

[1, 2], [10, 20], [100, 200, 300]

則輸出應為 −

const output = [
   [ 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 ]
];

示例

const arr1 = [1, 2];
const arr2 = [10, 20];
const arr3 = [100, 200, 300];
const cartesianProduct = (...arr) => {
   return arr.reduce((acc,val) => {
      return acc.map(el => {
         return val.map(element => {
            return el.concat([element]);
         });
      }).reduce((acc,val) => acc.concat(val) ,[]);
   }, [[]]);
};
console.log(cartesianProduct(arr1, arr2, arr3));

輸出

這將生成以下輸出 −

[
   [ 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 ]
]

更新於: 31-3 月-2023

539 人次瀏覽

開啟您的 職業生涯

完成該課程,獲得認證

開始學習
廣告
© . All rights reserved.