Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menjana Semua Pilihatur bagi Tatasusunan Integer dalam JavaScript?

Bagaimanakah Saya Boleh Menjana Semua Pilihatur bagi Tatasusunan Integer dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-12-19 19:56:12167semak imbas

How Can I Generate All Permutations of an Integer Array in JavaScript?

Penjanaan Pilihatur dalam JavaScript

Untuk menjana pilih atur tatasusunan integer dalam JavaScript, fungsi rekursif boleh digunakan. Matlamatnya adalah untuk mengambil tatasusunan integer sebagai input dan mengembalikan tatasusunan yang mengandungi semua pilih atur yang mungkin, setiap satu dengan panjang yang sama dengan tatasusunan input.

Fungsi Pilihatur Diubahsuai

Fungsi yang disediakan untuk pilih atur rentetan boleh diubah suai dengan mempertimbangkan perbezaan cara kaedah beroperasi pada integer dan rentetan:

const permArr = [];
const usedNums = [];

function permuteIntegers(input) {
  for (let i = 0; i < input.length; i++) {
    const num = input.splice(i, 1)[0];
    usedNums.push(num);
    if (input.length === 0) {
      permArr.push([...usedNums]);
    }
    permuteIntegers(input);
    input.splice(i, 0, num);
    usedNums.pop();
  }
  return permArr;
}

Versi Lebih Pendek dan Moden (ES6)

Menggunakan ciri JavaScript moden, fungsi di atas boleh dipermudahkan:

const permutator = (inputArr) => {
  const result = [];

  const permute = (arr, memo = []) => {
    if (arr.length === 0) {
      result.push(memo);
    } else {
      for (let i = 0; i < arr.length; i++) {
        const curr = arr.slice();
        const next = curr.splice(i, 1)[0];
        permute(curr, memo.concat(next));
      }
    }
  };

  permute(inputArr);
  return result;
};

Contoh Penggunaan

Kedua-dua fungsi boleh digunakan untuk menjana pilih atur tatasusunan integer:

console.log(permuteIntegers([1, 2, 3])); // Output: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

console.log(permutator([1, 2, 3])); // Output: same as above

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Pilihatur bagi Tatasusunan Integer dalam 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