Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm tất cả các tập con có thể có của một mảng trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các ký tự làm đối số đầu tiên và duy nhất.

Hàm phải tạo và trả về một mảng gồm tất cả các mảng con có thể được hình thành từ mảng ban đầu.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [1, 2, 3];

Sau đó, đầu ra phải là -

const output = [
   [2],
   [1],
   [3],
   [1,2,3],
   [2,3],
   [1,2],
   [1, 3],
   []
];

Thứ tự của các mảng con không quan trọng lắm.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[
   [], [ 1 ],
   [ 2 ], [ 1, 2 ],
   [ 3 ], [ 1, 3 ],
   [ 2, 3 ], [ 1, 2, 3 ]
]