0
나는 각 선수의 상대를 저장하기 위해이 몽고 수집 opponents
를 함께 수집을 업데이트하는 방법을
{username:foo, foo:{foo1:0,foo2:0,foo3:0}}
{username:foo1,foo1:{foo:0,foo2:0,foo3:0}}
{username:foo2,foo2:{foo:0,foo1:0,foo3:0}}//i.e player foo2 play 0 games with foo,foo1 and foo3
그리고 Node.js를 서버 측에서이 table
객체의 자세한 사항 테이블에있는 각 플레이어의 경우, 상대방의 이름과 라운드를 그에 따라 opponent
컬렉션에 추가하고 싶습니다 (물론 추가 할 필요가 없습니다). 원하는 결과는
{username:foo, foo:{foo1:3,foo2:3,foo3:3}}
{username:foo1,foo1:{foo:3,foo2:3,foo3:3}}
{username:foo2,foo2:{foo:3,foo1:3:foo3:3}}
{username:foo3,foo3:{foo:3,foo1:3,foo2:3}}
각 플레이어에게 상대방 이름의 배열을 반환하는 사용자 지정 함수 fun(name)
이 있습니다. 그래서 fun(table[0].name)
이 내 현재 코드입니다 [foo1,foo2,foo3]
function fun(name){
var result = [];
for (var i = 0; i <players.length; i++){
if(players[i].name!=name){
result.push(players[i].name)
}
}
return result;
}
을 반환 :
for (var i =0;i<table.length;i++){
db.opponents.update({username:table[i].name},{$inc:{[table[i].name + '.' + fun(table[i].name)[0] ] :table[i].rounds}})
if (table.length>2){
db.opponents.update({username:table[i].name},{$inc:{[table[i].name + '.' + fun(table[i].name)[1] ] :table[i].rounds}})
}
if (table.length>3){
db.opponents.update({username:table[i].name},{$inc:{[table[i].name + '.' + fun(table[i].name)[2] ] :table[i].rounds}})
}
그러나 table.length
증가 내가 코드를 더 줄 필요가있는 경우는, 딱딱한 하드 코딩입니다. 변수를 좀 더 컴팩트하게 만들려면 어떻게해야합니까? 중첩 된 루프를 사용하려고했지만 더 악화되었습니다.