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

Linda Hamilton
Lepaskan: 2024-11-03 21:05:29
asal
337 orang telah melayarinya

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

Produk Cartesian Nilai Tatasusunan JavaScript

Masalah:

Diberi nombor JavaScript yang sewenang-wenangnya tatasusunan dengan panjang yang berbeza-beza, tentukan semua kombinasi (hasil Cartesian) bagi nilainya.

Penyelesaian:

Tugas ini boleh diselesaikan dengan cekap menggunakan rekursi. Ia melibatkan lelaran melalui setiap tatasusunan dan menggabungkan nilainya dengan semua kemungkinan gabungan tatasusunan yang tinggal.

Pertimbangkan pelaksanaan berikut:

function allPossibleCases(arr) {
  if (arr.length === 1) {
    return arr[0];
  } else {
    const result = [];
    const casesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of arr
    casesOfRest.forEach((c) => {
      for (let i = 0; i < arr[0].length; i++) {
        result.push(arr[0][i] + c);
      }
    });
    return result;
  }
}
Salin selepas log masuk

Penggunaan:

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];
var results = allPossibleCases(allArrays); // outputs ["acd", "bcd", "azd", ...]
Salin selepas log masuk

Penjelasan:

  • Fungsi allPossibleCases mengambil tatasusunan tatasusunan sebagai input.
  • Jika tatasusunan input hanya mempunyai satu sub-tatasusunan , ia mengembalikan nilainya.
  • Jika tidak, ia secara rekursif memanggil dirinya dengan sub-tatasusunan yang tinggal dan menggabungkan setiap nilai sub-tatasusunan dengan semua kemungkinan gabungan sub-tatasusunan yang tinggal.
  • Fungsi ini lelaran melalui setiap sub-tatasusunan dan menggabungkan nilainya dengan setiap gabungan daripada tatasusunan yang tinggal, menjana semua gabungan yang mungkin.
  • Hasil akhir ialah tatasusunan rentetan yang mengandungi semua gabungan nilai yang unik daripada tatasusunan input.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Gabungan (Produk Cartesian) Nilai dalam 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan