2013-10-16 101 views
2

我從數據庫中得到具有部分匹配結果的對象。變量的javascript增量名稱

[Object { home1=4, away1=3, home2=4, away2=5, home3=6, away3=7, home4=6, away4=5, home5=3, away5=6}] 

和home1這是主隊, away1的第一部分的結果 - >客隊,HOME2這是主隊的第二部分......等等等等,在我的情況

數據是每一個結果行,我從數據庫中獲得。 在行中,我有td與類:home1,home2,home3,away1,away2,並有匹配的相應部分的值。 我想檢查值是否等於我從數據庫中得到的值。 類似這樣的

if ($('.home1') === data[index].home1; 
if($('.away2') === data[index].away2; 

應該有一些循環。我不知道如何做到這一點,我想到了一個數組

var array = [ 

         { 
          home1: data[index].home1, 
          away1: data[index].away1 
         }, 
          { 
          home2: data[index].home2, 
          away2: data[index].away2 
         }, 
          { 
          home3: data[index].home3, 
          away3: data[index].away3 
         }, 
         { 
          home4: data[index].home4, 
          away4: data[index].away4 
         }, 
         { 
          home5: data[index].home5, 
          away5: data[index].away5 
         } 


        ] 

,然後循環:

for(var X=0; X<5;X++){ 
homeX == data[index].homeX 
} 

我如何通過eval函數遞增變量的名字嗎?還是有其他解決方案嗎?我很困惑。

+0

$(。home1)是無效的選擇器 – webduvet

+1

您應該從數據庫中正確格式化JSON。 +你應該發佈你的代碼來獲得一些幫助。 – webduvet

回答

0

也許你應該用一點點不同的結構可能適合您的需求更好,就像這樣:

array = [ 
    0: array [ 
     "home": "Text for home", 
     "away": "Text for away" 
    ], 

    1: array [ 
     "home": "", 
     "away": "" 
    ] 
    // More sub-arrays here 
]; 

您還可以用它初始化for循環:

var array = new Array(); 
var i; 
for (i = 0; i < 4; i++) { 
    array[i] = [ 
     "home": "", 
     "away": "" 
    ]; 
} 

或者是這樣的:

array[0]["home"] = "Text for home"; 
array[0]["away"] = "Text for away"; 

您也可以將此結構用於數據數組,然後使用for-loop去通過他們兩個(如果你想找到一個元素):

var result = NULL; 
for (i = 0; i < array.length; i++) { 
    if ( (array[i]["home"] == data[index]["home"]) && 
      (array[i]["away"] == data[index]["away"]) 
    ) { 
     // Found matching home and away 
     result = array[i]; 
     break; 
    } 
} 
if (result != NULL) { 
    alert("Found match: " + result["home"] + " - " + result["away"]); 
} 
else { 
    alert("No match"); 
} 

PS:代碼沒有測試,讓我知道是否有問題。

1

您可以通過訪問對象屬性運算符[]:

for(var i=0; i<array.length; i++) 
{ 
    var item = array[i]; 
    var homePropertyName = 'home' + (i+1); 
    //now you can access homeX property of item using item[homePropertyName] 
    //e.g. item[homePropertyName] = data[index][homePropertyName] 
} 
0

你可以在瀏覽器中通過這樣的窗口對象(fiddle)訪問全局屬性:

value1 = "ONE"; 

alert(window['value'+1]); 

但它不是好的設計。您應該研究如何正確格式化JSON對象。

0

我有這樣的事情:

for(var i=0; i<2; i++) 

{ 

    var item = ARR[i]; 

    for(var x=0;x<5;x++){ 

    var hPropertyName = 'home_p' + (x+1); 

    var aPropertyName = 'away_p' + (x+1); 

    item[hPropertyName] = ARR[i][hPropertyName];  

     item[aPropertyName] = ARR[i][aPropertyName]; 

} 

,當我創建一個數組它的工作原理:

var ARR = [ 

     { 

      home_p1: 4, 

      away_p1: 5, 

      home_p2: 8, 

      away_p2: 9, 

      home_p3: 2, 

      away_p3: 1, 

      home_p4: 5, 

      away_p4: 3, 

      home_p5: 3, 

      away_p5: 2 

     }, 

     { 

      home_p1: 6, 

      away_p1: 1, 

      home_p2: 1, 

      away_p2: 2, 

      home_p3: 3, 

      away_p3: 4, 

      home_p4: 5, 

      away_p4: 6, 

      home_p5: 3, 

      away_p5: 2 

     } 

    ]; 

,但我沒有創建一個數組,因爲我有工作在我從數據庫中獲得的對象:

[Object { event_id=19328, home_result=3, away_result=2, home_p1=4, away_p1=3, home_p2=1, away_p2=2 ...... }] 

我只對這些參數感興趣 - > home_p,away_p 我想把它推到我的數組看起來像ARR。我想我應該把我得到的一個對象數組轉換爲