将具有值对的 N 个数组的数组拆分为集合 N 个集合

Splitting an array with N arrays of a value pair, into set N sets

有什么关于如何实现的帮助或建议吗?

我有一组8支队伍

    teamArray  =['Team_1', 'Team_2', 'Team_3', 'Team_4', 'Team_5', 'Team_6', 'Team_7', 'Team_8']

并使用以下函数对每支队伍进行配对,每队有 28 对

    let pairs = teamArray.flatMap(
        (v, i) => teamArray.slice(i+1).map( w => [v,w] )
    );

现在我想把 28 对分成 7 个数组,每个数组有 4 个对,而每个数组不能有一个具有一个值的对超过一次?

所需输出的示例:

result  = [
[['Team_1', 'Team_2'], ['Team_3', 'Team_4'], ['Team_5', 'Team_6'], ['Team_7', 'Team_8']],
[['Team_1', 'Team_3'], ['Team_2', 'Team_4'], ['Team_5', 'Team_7'], ['Team_6', 'Team_8']],
...]

似乎是数组的 reduce 方法的任务:

result = pairs.reduce((accumulator, currentPair) => {
    let match = accumulator.find(array => !array.some(pair => currentPair.some(ci => pair.some(i => ci === i))));
    if (match !== undefined) {
        match.push(currentPair);
        return accumulator;
    }
    else {
        accumulator.push([currentPair]);
        return accumulator;
    }
}, []);