Bagaimana untuk Menjana Semua Gabungan (Produk Cartesian) Nilai daripada Tatasusunan JavaScript?

DDD
Lepaskan: 2024-11-03 16:19:02
asal
737 orang telah melayarinya

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

Mencari Semua Gabungan (produk Cartesian) Nilai Tatasusunan JavaScript

Menghasilkan semua gabungan nilai daripada berbilang tatasusunan dalam JavaScript boleh dicapai melalui konsep produk Cartesian. Begini cara anda boleh mendekatinya:

Rekursi untuk Produk Cartesian


Untuk menjana semua kombinasi, kita boleh menggunakan fungsi rekursif yang berulang melalui setiap tatasusunan dan menggabungkan elemen daripada semua tatasusunan.

Berikut ialah contoh fungsi rekursif yang mencari hasil darab Cartesian bagi berbilang tatasusunan:



< ;pre class="snippet-code-js lang-js prettyprint-override">function allPossibleCases(arr) {
if (arr.length == 1) {

return arr[0];
Salin selepas log masuk

} 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;
Salin selepas log masuk

}
}



Contoh Penggunaan


Katakan anda mempunyai tiga tatasusunan:

var first = ['a', 'b'], <br>var second = ['c'],<br>var third = ['d', 'e', ​​'f'];

Menggunakan fungsi allPossibleCases, anda boleh menjana semua kombinasi seperti berikut:




var allArrays = [first, second, third];<br>console.log(allPossibleCases(allArrays));



Ini akan mengeluarkan gabungan berikut:

acd
ace
acf
bcd
bce
bcf
azd
aze
azf
bzd
bze
bzf
Salin selepas log masuk

Nota: Susunan elemen dalam setiap gabungan mungkin berbeza bergantung pada susunan tatasusunan dalam pembolehubah allArrays.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Gabungan (Produk Cartesian) Nilai daripada Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan