0
私は各プレイヤーの対戦相手を保存するために、このMongoのコレクション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
増加が、私はより多くのコード行を必要とする場合には、剛性のハードコーディングです。どのように変数を使用してよりコンパクトにすることができますか?ネストされたループを使用しようとしましたが、それはそれをさらに悪化させました。