Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาชุดย่อยที่เป็นไปได้ทั้งหมดของอาร์เรย์ใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน 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 ]
]