Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การสร้างเรียงสับเปลี่ยนของอาร์เรย์ด้วยจำนวนสมาชิกที่กำหนดใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของค่าคงที่ (literals) เป็นอาร์กิวเมนต์แรก และตัวเลขเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันต้องสร้างอาร์เรย์ของอาร์เรย์ย่อยที่มีความยาวเท่ากับตัวเลขที่ระบุ และประกอบด้วยการเรียงสับเปลี่ยน (permutations) ทุกกรณีที่เป็นไปได้ของสมาชิกในอาร์เรย์นำเข้า

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าและตัวเลขเป็น:

const arr = ['k', 5];
const num = 3;

ผลลัพธ์ควรเป็น:

const output = [
  ['k', 'k', 'k'],
  ['k', 'k', 5],
  ['k', 5, 'k'],
  ['k', 5, 5],
  [5, 'k', 'k'],
  [5, 'k', 5],
  [5, 5, 'k'],
  [5, 5, 5]
];

ตัวอย่างโค้ด

const arr = ['k', 5];
const num = 3;
const allPairs = (arr = [], num) => {
  const res = [];
  if(num === 0) {
    return [[]];
  }
  const subResult = allPairs(arr, num - 1);
  for(let el of arr) {
    for(let sub of subResult) {
      res.push([el].concat(sub));
    }
  }
  return res;
};
console.log(allPairs(arr, num));

ผลลัพธ์

[
  ['k', 'k', 'k'],
  ['k', 'k', 5],
  ['k', 5, 'k'],
  ['k', 5, 5],
  [5, 'k', 'k'],
  [5, 'k', 5],
  [5, 5, 'k'],
  [5, 5, 5]
]