Acabo de escribir este fragmento de código que hace lo que se supone que debe hacer, aunque es muy complicado y bastante repetitivo y me pregunto cómo puedo hacerlo mucho más breve y conciso.
if(id==1 && player == "playerOne"){ Object.assign(playerOne, fighters[0]) }else if(id==1 && player =="playerTwo"){ Object.assign(playerTwo, fighters[0]) } if(id==2 && player == "playerOne"){ Object.assign(playerOne, fighters[1]) }else if(id==2 && player =="playerTwo"){ Object.assign(playerTwo, fighters[1]) } if(id==3 && player == "playerOne"){ Object.assign(playerOne, fighters[2]) }else if(id==3 && player =="playerTwo"){ Object.assign(playerTwo, fighters[2]) } if(id==4 && player == "playerOne"){ Object.assign(playerOne, fighters[3]) }else if(id==4 && player =="playerTwo"){ Object.assign(playerTwo, fighters[3]) } if(id==5 && player == "playerOne"){ Object.assign(playerOne, fighters[4]) }else if(id==5 && player =="playerTwo"){ Object.assign(playerTwo, fighters[4]) } if(id==6 && player == "playerOne"){ Object.assign(playerOne, fighters[5]) }else if(id==6 && player =="playerTwo"){ Object.assign(playerTwo, fighters[5]) } if(id==7 && player == "playerOne"){ Object.assign(playerOne, fighters[6]) }else if(id==7 && player =="playerTwo"){ Object.assign(playerTwo, fighters[6]) } if(id==8 && player == "playerOne"){ Object.assign(playerOne, fighters[7]) }else if(id==8 && player =="playerTwo"){ Object.assign(playerTwo, fighters[7]) } if(id==9 && player == "playerOne"){ Object.assign(playerOne, fighters[8]) }else if(id==9 && player =="playerTwo"){ Object.assign(playerTwo, fighters[8]) }¡Gracias de antemano!
Asumiendo
a) no hay más de dos jugadores
b) no le importa que este código maneje id < 1 e id > 9
Me parece que podrías reducir esto a una sola línea.
Object.assign(player == "playerOne" ? playerOne : playerTwo, fighters[id - 1])Según las suposiciones de su ejemplo, esa id debe estar entre 1 y 9 y el player puede ser cualquier cosa, pero debe ser playerOne o playerTwo :
for (var i = 1; i < 10; i++) { if (id == i) { if(player == "playerOne"){ Object.assign(playerOne, fighters[i - 1]); } else if (player == "playerTwo") { Object.assign(playerTwo, fighters[i - 1]); } } }¿Qué pasa si lo reescribes para que sea algo similar a
if (player == "playerOne") { p = playerOne } else if (player =="playerTwo") { p = playerTwo } Object.assign(p, fighters[id - 1])