2015-10-27 3 views
2

Меня есть набор массива в json как следует:JQuery: Определить значение объявленной переменной такое же, как значение в списке ключей в массиве

{"status":200,"success":true,"result": 
[{"id":"0","name":"user1","type":"mf","message":"bonjour user1"}, 
{"id":"1","name":"user2","type":"ff","message":"hello user2"}, 
{"id":"2","name":"user3","type":"mm","message":"konnichiwa user3"}, 
{"id":"3","name":"user4","type":"mf","message":"ni hao user4"}, 
{"id":"4","name":"user5","type":"ff","message":"high 5! user5"}]} 

Я хотел бы спросить, как могу ли я определить, является ли значение объявленной переменной (например, «getName» со значением «user1») таким же, как значение в списке «именных» ключей в массиве?

Ниже моя попытка, и вы могли бы найти свой полный код here:

var apiUrl = "https://sheetsu.com/apis/f924526c"; 

$.getJSON(apiUrl,function(json){ 

    console.log(JSON.stringify(json)); 

     var getName = $.each(getName, function(content, json){ 
      console.log(json.name); 
      console.log(getName[content].id); 
     }); 

     var identifiedId = $.each(getName, function(){ 
      console.log(this.name); 
      console.log(this.id); 
     }) 
}); 
+0

Основываясь на примере json в вашем вопросе, каков ваш желаемый результат? –

+0

Мой сценарий выглядит так: существует форма для ввода пользователем своего имени (например, user1). Результат (значение) затем будет сопоставлен с моим json API, чтобы узнать, есть ли такое же значение из ключа «name». Если да, то // сделаем что-нибудь. –

+0

Пожалуйста, объясните, что вы пытаетесь сделать более подробно. Ваше объявление 'getName' не определено. – charlietfl

ответ

1

Я не уверен, если я понял ваш код, но для того, чтобы петли корыта json и найти значение ключа вы хотите использовать :

$.each(json.result, function() { 
    //here you can store id. 
    $.each(this, function(key, value) { 
     console.log(key + ' ' + value); 
     //test if key = username you want and store value 
    }); 
}); 

вы также можете сделать это с одной петлей, так как вы знаете, какой ключ, чтобы проверить

$.each(json.result, function() { 
    if (this.name == "name you look for"){ 
     idyouneed = this.id; 
    } 
} 
+0

Привет, спасибо за ваш ответ. Я попытался напечатать значения только в ключе «имя», но он не работает с этим (console.log (key.name);) в консольном журнале u, предложенном выше, могу ли я спросить, что вы предложите, пожалуйста? x –

+0

Если вы хотите указать ключ имени, вы можете сделать это в первом цикле foreach. Во втором цикле выполняется цикл по всем клавишам в каждом результате. Таким образом, вы также можете добавить 'if key == name' во второй цикл' .each'. –

+0

Спасибо большое Bas :))) x –

0

Если я правильно понял, вы пытаетесь выяснить, находится ли конкретное имя в вашем json-файле.

Это был бы один из способов сделать это. Итоговая часть вашего json - массив объектов. Вы можете пройти через этот массив.

var nameToCheck = "user1"; 

$.each(json.result, function(res) { 
    if (res["name"] == nameToCheck) { 
     // do something 
    } 

}); 

Однако, как прокомментировал кто-то, может быть более эффективным использование вашего api для существования определенного имени или пользователя. Проверьте документацию api.