我猜这里还有更多关于逻辑的问题。我正在努力实现这样的目标:
我有四个玩家:
const playersArray = ['player1', 'player2', 'player3', 'player4'];
他们每个人都互相比赛,但只有一次,没有复赛。
因此显然,玩家1不能与玩家1进行游戏。但是玩家1和玩家2之间也只有一个匹配。存在玩家1:玩家2,但我们不需要拥有玩家2:玩家1。
我试图在映射方法中使用映射方法,诸如此类:
playersArray.map(player1 => playersArray.map(player2 =>
<ul>
<li>{player1}</li> :
<li>{player2</li>
</ul>
))
避免玩家玩耍时的场景非常容易(有条件渲染)。但是对我来说,问题是要避免重新比赛。
谢谢!
答案 0 :(得分:0)
playersArray.map((player, index) =>
playersArray.slice(index+1).map(anotherPlayer =>
(
<ul>
<li>{player} : {anotherPlayer}</li>
</ul>
)
)
);
答案 1 :(得分:-1)
一种选择是遍历数组,并在主循环的当前索引之后在数组的其余部分上创建一个内部循环,以获取所有可能的匹配项:
示例
function App() {
const playersArray = ["player1", "player2", "player3", "player4"];
const content = [];
for (let i = 0; i < playersArray.length; i++) {
for (let j = i + 1; j < playersArray.length; j++) {
content.push(
<div>
{[playersArray[i]]} : {playersArray[j]}
</div>
);
}
}
return <div>{content}</div>;
}