2013-10-16 3 views
2

Я получаю объект с частичными результатами соответствия из базы данных.javascript increment name of variable

[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 
]; 

Вы также можете инициализировать его для цикла:

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. Я думаю, что я должен преобразовать объект, который я получаю в массив