значения цикла json с использованием jquery - PullRequest
0 голосов
/ 07 января 2012

У меня есть нижеприведенный объект json, и я хочу зациклить результат:

{
  "result":
    [
      {
        "uid": "4efd59257641f",
        "name": "Jack",
        "email": "asd@gmail.com",
        "phone": null,
        "state": null,
        "zip": null
      }
    ]
}

Я использую следующее:

$.each(result, function(key,value) {
    uid= value.uid;
    name= value.name;
    email= value.email;
    phone= value.phone; // same stuff for state and zip
});

Я хочу найти длинуколичество пар имя = значение в результате и цикле, основанном на этом.Это можно сделать?

Как и в приведенном выше ответе json: результат содержит 6 элементов (uid, name, email, phone, state, zip).я хочу зациклить 6 раз и получить соответствующий элемент .

Ответы [ 3 ]

1 голос
/ 07 января 2012

То, что искал OP, было способом ссылки на ключ текущего объекта при создании другого значения (в моем примере это строка, но я думаю, это может быть что-то еще).Цикл for объекта работает (и также $.each()) на value, переданном анонимной функции в первом цикле $.each().

for цикл:

var result = {
  "result":
    [
      {
        "uid": "4efd59257641f",
        "name": "Jack",
        "email": "asd@gmail.com",
        "phone": null,
        "state": null,
        "zip": null
      },
      {
        "uid": "kdflsjkdf",
        "name": "Bill",
        "email": "abablabba@example.com"
      }
    ]
};

$.each(result.result, function(key, value) {
    var str = '';
    for (k in value) {
        str += k + ' = ' + value[k] + '; ';
    }
    console.log(str);
});

http://jsfiddle.net/Tv2fw/2/

$.each() петля:

var result = {
  "result":
    [
      {
        "uid": "4efd59257641f",
        "name": "Jack",
        "email": "asd@gmail.com",
        "phone": null,
        "state": null,
        "zip": null
      },
      {
        "uid": "kdflsjkdf",
        "name": "Bill",
        "email": "abablabba@example.com"
      }
    ]
};

$.each(result.result, function(key, value) {
    var str = '';
    $.each(value, function (k, v) {
        str += k + ' = ' + v + '; ';
    });
    console.log(str);
});

http://jsfiddle.net/Tv2fw/5/

1 голос
/ 07 января 2012

Вы можете пройти через это так:

var counter = 0;
for(key in j['result'][0]){
    alert(key +' => '+j['result'][0][key]);
    ++counter;
}
alert(counter);
0 голосов
/ 07 января 2012

Что вам нужно, не ясно.Но, увидев ваш комментарий, я думаю, что вам нужен результат на основе массива.Таким образом, вы можете использовать следующую структуру.

var response = {
  "result":
    [
      [ "4efd59257641f", "Jack", "asd@gmail.com", null, null, null ],
      [ "4efd52357641f", "Jack1", "asd1@gmail.com", null, null, null ]
      [ "4efd23257641f", "Jack2", "asd2@gmail.com", null, null, null ]
    ]
}

Таким образом, вы сможете зацикливаться как

$.each(response.result, function(key,value) {
    uid= value[0];
    name= value[1];
    email= value[2];
    phone= value[3]; // same stuff for state and zip
});

Или

for(var i=0; i < response.result.length; i++) {
       var value = response.result[i];
       uid= value[0];
       name= value[1];
       email= value[2];
       phone= value[3]; // same stuff for state and zip
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...