2013-05-24 2 views
5

Это мой JSONКак выделить значения из json-массива с помощью jquery.?

{ 
    "data": [ 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 
    ] 
} 

this is my code jquery Code

for(i=0; i<= contacts.data.length; i++) { 
    $.each(contacts.data[i], function(index, objValue){ 
     alert("id "+objValue); 
    }); 
} 

я получил данные в моей objValue, но я хочу, чтобы хранить отдельно в массиве id и name это выглядит, как этот взгляд на мой код ниже

var id=[]; 
var name = []; 
for(i=0; i<= contacts.data.length; i++){ 
    $.each(contacts.data[i], function(index, objValue) { 
     id.push(objValue[index]); // This will be the value "1" from above JSON 
     name.push(objValue[index]); // This will be the value "Skylar Melovia" from above JSON 
    }); 
} 

Как я могу это сделать.

+0

Его работаешь, как хочешь? Определите проблему лучше. –

ответ

3
$.each(contacts.data, function(index, objValue) 
{ 
    id.push(objValue[0]); // This will be the value "1" from above JSON 
    name.push(objValue[1]); // This will be the value "Skylar Melovia" from above JSON 

}); 

Редактировать, альтернативное использование:

$.each(contacts.data, function() 
{ 
    id.push(this[0]); // This will be the value "1" from above JSON 
    name.push(this[1]); // This will be the value "Skylar Melovia" from above JSON 
}); 

в $ .each Переберем contacts.data который:

[ 
    //index 1 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    //index=2 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 

] 

anomnymous функции вы даете с функцией подписи (индекс, Objvalue) будет применяться к каждому элементу с index его индексом в массиве contact.data и objValue его значением. Для индекса = 1 вы будете иметь:

objValue=[ 
      "1", 
      "Skylar Melovia" 
     ] 

Тогда вы можете получить доступ к objValue [0] и objValue [1].

EDIT (в ответ на комментарий Dutchie432 и ответ;)): Быстрее способ сделать это без JQuery, $ .each приятнее писать и читать, но здесь используется обычный старый JS:

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
+0

Ну, вот оно. 3 разных ответа, которые делают одну и ту же точку. Вероятно, это лучший ответ, поскольку моя лениво использует '.length' в цикле for. Твой более гладкий. – Dutchie432

+0

slick, но когда вам особо не нужен jQuery, вы должны использовать цикл в любом случае, но я думаю, что OP должен видеть, как работает $ .each. – TecHunter

+0

Спасибо за решение и объясняю все это. он работает хорошо .. – addy

1

Возможно, я не понимаю полностью, но я думаю, что вы перебираете элементы данных, а затем перебираете содержащиеся значения. Я думаю, что вы хотите просто перебрать элементы данных и вывести значения 0 и 1 соответственно.

Кроме того, я полагаю, вы хотите less than (<) оператор в цикле, в отличие от less than or equal to (<=)

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
0

Удалите внешнюю for петлю. $.each уже итерации над массивом data. data[i] не является массивом, поэтому $.each не может перебирать его.

http://jsfiddle.net/ExplosionPIlls/4p5yh/

Вы также можете использовать цикл for вместо $.each, но не оба.

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