Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menjana Semua Gabungan (Produk Cartesian) Nilai dalam Tatasusunan JavaScript?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-03 21:05:29482semak imbas

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;
  }
}

Penggunaan:

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

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!

Kenyataan:
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