請對如何實作有任何幫助或建議?
我有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']],
...]
uj5u.com熱心網友回復:
似乎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;
}
}, []);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463569.html
標籤:javascript 数组 排序 分裂
