เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของลิเทอรัลเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ฟังก์ชันควรสร้างและส่งคืนอาร์เรย์ของอาร์เรย์ย่อยที่เป็นไปได้ทั้งหมดซึ่งสร้างขึ้นจากอาร์เรย์ดั้งเดิมได้
ตัวอย่างเช่น −
หากอาร์เรย์อินพุตเป็น −
const arr = [1, 2, 3];
จากนั้นผลลัพธ์ควรเป็น −
const output = [ [2], [1], [3], [1,2,3], [2,3], [1,2], [1, 3], [] ];
ลำดับของอาร์เรย์ย่อยไม่สำคัญนัก
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [1, 2, 3];
const findAllSubsets = (arr = []) => {
arr.sort();
const res = [[]];
let count, subRes, preLength;
for (let i = 0; i < arr.length; i++) {
count = 1;
while (arr[i + 1] && arr[i + 1] == arr[i]) {
count += 1;
i++;
}
preLength = res.length;
for (let j = 0; j < preLength; j++) {
subRes = res[j].slice();
for (let x = 1; x <= count; x++) {
if (x > 0) subRes.push(arr[i]);
res.push(subRes.slice());
}
}
};
return res;
};
console.log(findAllSubsets(arr)); ผลลัพธ์
ต่อไปนี้เป็นเอาต์พุตคอนโซล -
[ [], [ 1 ], [ 2 ], [ 1, 2 ], [ 3 ], [ 1, 3 ], [ 2, 3 ], [ 1, 2, 3 ] ]