เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของลิเทอรัลเป็นอาร์กิวเมนต์แรกและตัวเลขเป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันควรสร้างอาร์เรย์ของอาร์เรย์ดังกล่าวทั้งหมดที่มีความยาวเท่ากับจำนวนที่ระบุโดยอาร์กิวเมนต์ที่สอง และมีการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดขององค์ประกอบของอาร์เรย์อินพุต
ตัวอย่างเช่น −
หากอาร์เรย์อินพุตและตัวเลขเป็น −
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 ] ]