Javascript 映射函数中的特定映射函数

Javascript 映射函数中的特定映射函数,javascript,reactjs,Javascript,Reactjs,我想这里更多的是关于逻辑的问题。我正在努力实现这样的目标: playersArray.map(player1 => playersArray.map(player2 => <ul> <li>{player1}</li> : <li>{player2</li> </ul> )) 我有四个玩家: const playersArray = ['player1', 'player2', 'pla

我想这里更多的是关于逻辑的问题。我正在努力实现这样的目标:

playersArray.map(player1 => playersArray.map(player2 =>
  <ul>
    <li>{player1}</li> :
    <li>{player2</li>
  </ul>
))
我有四个玩家:

const playersArray = ['player1', 'player2', 'player3', 'player4'];
他们每个人都互相比赛,但只有一次,没有重赛

很明显,玩家1不能和玩家1一起玩。但是玩家1和玩家2之间只有一场比赛。有player1:player2,但我们不需要player2:player1

我试图在映射方法中使用映射方法,类似于:

playersArray.map(player1 => playersArray.map(player2 =>
  <ul>
    <li>{player1}</li> :
    <li>{player2</li>
  </ul>
))
playerArray.map(player1=>playerArray.map(player2=>
  • {player1}
  • {player2
))
避免玩家玩自己游戏的场景也很容易(条件渲染)。但对我来说,问题是避免重赛


谢谢!

一个选项是在数组上循环,并在主循环的当前索引之后在数组的其余部分上创建一个内部循环,以获得所有可能的匹配:

示例

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>;
}
函数应用程序(){
常量playerArray=[“player1”、“player2”、“player3”、“player4”];
常量内容=[];
for(设i=0;i
playersArray.map((播放器,索引)=>
PlayerArray.slice(索引+1).map(其他玩家=>
(
  • {玩家}:{另一个玩家}
) ) );
你要找的是“长度2的所有组合”,这对谷歌搜索应该有帮助。