2012-04-16 5 views
-1

У меня есть 3 массива, как показано ниже. Я не контролирую массивы.Сравните несколько массивов JSON

groups_array = [ { 
    "group" : "Mobile Test Region", 
    "id" : "251" 
}, { 
    "group" : "Mobile Demo Region", 
    "id" : "252" 
} ] 
locations_array = [ { 
    "location" : "M Testing", 
    "id" : "1376" 
}, { 
    "location" : "Trade Show Machine", 
    "id" : "1403" 
}, { 
    "location" : "M Trailer", 
    "id" : "1471" 
}, { 
    "location" : "Test Los Angeles", 
    "id" : "1475" 
} ] 
pairs_array = [ { 
    "location_id" : "1376", 
    "group_id" : "251" 
}, { 
    "location_id" : "1475", 
    "group_id" : "251" 
}, { 
    "location_id" : "1403", 
    "group_id" : "252" 
}, { 
    "location_id" : "1471", 
    "group_id" : "252" 
} ] 

Вот код, который я использовал в цикле через pairs_array и извлечения LOCATION_ID-х, которые соответствуют группе ид. Ti.API.info (pairs_array [с] .location_id); выводит 2 идентификатора местоположения на основе группы, заданной с использованием e.rowData.groupid.

for (var s = 0; s < pairs_array.length; s++) { 
    if (e.rowData.groupid === pairs_array[s].group_id) { 
     Ti.API.info(pairs_array[s].location_id); 
    } 
} 

Я пытаюсь сравнить строки и получить имена местоположения с помощью IVE в LOCATION_ID, что получили от утверждения IF. Должен ли я просто подталкивать результаты в массив и цитировать через location_array и результаты и сравнивать? Если это так, я бы хотел увидеть хороший фрагмент кода для этого, поскольку несколько раз, когда я пытался, я не получал ожидаемый результат.

+1

Интересно. Какой у Вас вопрос? – Hamish

+0

В чем вопрос? что ты уже испробовал? (читаете ли вы [FAQ] (http://stackoverflow.com/faq#howtoask)?) –

+0

Пожалуйста, прочтите FAQ: http://stackoverflow.com/faq. Заявив, что у вас «проблемы», мы не можем решить вашу проблему. – Hamish

ответ

0
for (var s = 0; s < pairs_array.length; s++) { 
    if (e.rowData.groupid === pairs_array[s].group_id) { 
     Ti.API.info(pairs_array[s].location_id); 

     // find location name 
     for(var t = 0; t < locations_array.length; t++) 
     { 
      if(locations_array[t].id == pairs_array[s].location_id) 
      { 
       location_name = locations_array[t].location;       
      } 
     } 
    } 
} 
+0

Это сделало, спасибо. Наверное, я был обеспокоен наследованием переменной при выполнении нескольких операторов/if. Я все еще ноб. Спасибо, что покончил с собой. –

+0

Привет Крис. В идеале, как сказал @zetlen: «Если у вас есть контроль над структурой этих массивов, подумайте о том, чтобы превратить их в хэши объектов с параметром« id »в качестве ключа ' – Alex

Смежные вопросы