首頁 >web前端 >js教程 >如何從 JavaScript 陣列產生值的所有組合(笛卡爾積)?

如何從 JavaScript 陣列產生值的所有組合(笛卡爾積)?

DDD
DDD原創
2024-11-03 16:19:02763瀏覽

How to Generate All Combinations (Cartesian Product) of Values from JavaScript Arrays?

尋找JavaScript 陣列值的所有組合(笛卡爾積)

在JavaScript 中從多個陣列產生值的所有組合可以透過以下方式實現:笛卡爾積的概念。實現方法如下:

笛卡爾積的遞歸


要產生所有組合,我們可以使用迭代的遞歸函數每個數組並組合所有數組中的元素。

以下是尋找多個陣列的笛卡爾積的遞歸函數範例:



function allPossibleCases (arr) {
if (arr.length == 1) {
return arr[0];

} else {

var result = [];
var allCasesOfRest = allPossibleCases(arr.slice(1)); // recur with the rest of array
for (var i = 0; i < allCasesOfRest.length; i++) {
  for (var j = 0; j < arr[0].length; j++) {
    result.push(arr[0][j] + allCasesOfRest[i]);
  }
}
return result;

}
}



使用範例


假設您有三個數組:

var first = ['a', 'b'], <br>var 第二= ['c'],<br>var 第三= ['d', 'e' , 'f'];

使用allPossibleCases 函數,您可以產生所有組合,如下所示:




var allArrays = [第一、第二、第三];
console.log(allPossibleCases(allArrays));


這將輸出以下組合:
acd
ace
acf
bcd
bce
bcf
azd
aze
azf
bzd
bze
bzf

注意:每個組合中元素的順序可能會根據allArrays 變數中數組的順序而有所不同。

以上是如何從 JavaScript 陣列產生值的所有組合(笛卡爾積)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn