Na przykład jest to 5 Wybierz 2:

    var array = [0,1,2,3,4];
    
    var result = array.flatMap(
        (v, i) => array.slice(i+1).map(w => [v, w]) 
    );
    
    console.log(result);

Jak mógłbym zrobić 5 Wybierz 3 za pomocą tej metody?

3
Yuval Levental 18 październik 2020, 18:03

1 odpowiedź

Najlepsza odpowiedź

Po prostu dodaj kolejny poziom zagnieżdżania:

var array = [0,1,2,3,4];

var result = array.flatMap((v, i) =>
    array.slice(i+1).flatMap((w, j) =>
        array.slice(i+1+j+1).map(u =>
            [v, w, u]
        )
    )
);

console.log(result);

W tym momencie może być łatwiej zrobić z rekurencją:

function choose(arr, k, prefix=[]) {
    if (k == 0) return [prefix];
    return arr.flatMap((v, i) =>
        choose(arr.slice(i+1), k-1, [...prefix, v])
    );
}

console.log(choose([0,1,2,3,4], 3));
9
Bergi 18 październik 2020, 15:27