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

Thuật toán để có được sự kết hợp của tất cả các mục trong JavaScript mảng

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng các ký tự chuỗi. Hàm phải tạo và trả về tất cả các kết hợp có thể có của các chuỗi trong mảng.

Ví dụ -

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

const arr = ['a', 'b', 'c', 'd'];

Sau đó, kết quả đầu ra phải là -

const output = ["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"];

Ví dụ

const getCombinations = (arr = []) => {
   const combine = (sub, ind) => {
      let result = []
      let i, l, p;
      for (i = ind, l = arr.length; i < l; i++) {
         p = sub.slice(0);
         p.push(arr[i]);
         result = result.concat(combine(p, i + 1));
         result.push(p.join(''));
      };
      return result;
   }
   return combine([], 0);
};
console.log(getCombinations(["a", "b", "c", "d"]));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   'abcd', 'abc', 'abd',
   'ab', 'acd', 'ac',
   'ad', 'a', 'bcd',
   'bc', 'bd', 'b',
   'cd', 'c', 'd'
]