Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuật toán lấy tổ hợp của tất cả mục trong mảng JavaScript


Cần viết hàm JavaScript nhận mảng chuỗi. Hàm tạo và trả về tất cả tổ hợp có thể của các chuỗi trong mảng.

Ví dụ - Nếu mảng đầu vào:

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

Đầu ra sẽ 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"]));

Kết quả

Kết quả trong console sẽ là:

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