Сравнение значения JSON в Jquery - PullRequest
0 голосов
/ 25 августа 2011

Я хочу проверить, существует ли «T1000» в качестве «ключа» утверждения в следующем JSON. Если он существует, то я хочу отобразить соответствующее «значение» утверждения.

{"approvals": 
    [
         {"approval":
            {
               "id":"0121920",
               "key":"T100",
               "value":"Ben Tsu"
            }
         },
         {"approval":
            {
               "id":"",
               "key":"T1000",
               "value":"Amy Dong"
            }
         }
    ]
}

Я получаю JSON в качестве ответа Ajax. Я пытаюсь перебрать все свойства и сопоставить его со значением, переданным в качестве параметра.

Вот мой код, но он только выплевывает объект Object, объект Object. Итак, если у меня 5 свойств, этот код выплевывает объект Object 5 раз.

Я передаю inputFieldDefaultValue в качестве параметра плагину со значением T1000. Следовательно, o.inputFieldDefaultValue.

$.each(response.approvals, function(index, approvals){ 
    if(approvals.approval.key == o.inputFieldDefaultValue){ 
         approvals.approval.value; 
    } 
}); 

Если я делаю

$.each(response.approvals, function(index, approvals){ 
    if(approvals.approval.key == o.inputFieldDefaultValue){ 
         alert(approvals.approval.value); 
    } 
});

предупреждает соответствующее значение (Эми Донг), но все равно записывает объект Object (столько раз, сколько свойств в ответе JSON).

Ответы [ 4 ]

3 голосов
/ 25 августа 2011

Вы можете получить доступ к значениям объекта JSON, используя следующий код, который пересекает объекты:

var approvals = obj.approvals;

for(var i = 0; i < approvals.length; i++)
{
  if(approvals[i].approval.key = 'T1000')
  {
    // Display approvals[i].approval.value
  }
}
0 голосов
/ 25 августа 2011

С помощью jQuery:

var approvals = obj.approvals;
$.each(approvals, function () {
    if (this.approval.key === 'T1000') {
        alert(this.approval.value);
    }
});
0 голосов
/ 25 августа 2011

вы бы сначала взяли свой json и использовали JSON.parse (json) для получения некоторых литералов объекта. Оттуда вы бы сделали

var ary = obj.approvals;
for (var i = 0; i < ary.length; i++) {
  var current = ary[i], val;
  if (current.key === 'T1000') {
    val = current.value;
    break;
  }
}
0 голосов
/ 25 августа 2011

Это можно сделать без jQuery. Вам просто нужно Array.prototype.filter и Array.prototype.map:

var aListOfAllValuesFromKeysEqualsToT1000 = json.approvals.filter(function(approval) {
    return approval.key === "T1000";
}).map(function(approval) {
    return approval.value;
});

Затем используйте aListOfAllValuesFromKeysEqualsToT1000, чтобы сделать любые значения, для которых вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...