如何在JSON对象中查找特定元素的索引

时间:2014-01-01 18:32:06

标签: jquery json

所以使用this JSON data我试图找到包含值“RankedSolo5x5”的元素的位置,之前我认为我可以这样做:

$("#rankedStats").append("Ranked wins: " + obj.playerStatSummaries[5].wins + "</br>" +
                                     "Ranked losses:" + obj.playerStatSummaries[5].losses + "</br>" +
                                     "w/l ratio: " + obj.playerStatSummaries[5].wins/obj.playerStatSummaries[5].losses + "</br>" +
                                     "Total Ranked Kills: " + obj.playerStatSummaries[5].aggregatedStats.totalChampionKills);

然而不幸的是,很快我发现对于不同的玩家来说,“RankedSolo5x5”的位置对于某些玩家来说会有所不同,所以可能是obj.playerStatSummaries[6].lossesobj.playerStatSummaries[7].losses,因此我需要找到包含“RankedSolo5x5”的元素,所以我尝试将所有值放在一个数组中并使用$.inArray("RankedSolo5x5", entry),如下所示:

 $.getJSON("https://prod.api.pvp.net/api/lol/" + region + "/v1.2/stats/by-summoner/" + sID + "/summary?api_key=b05c2251-f659-4d24-8b5f-6b25a482b42a", function(stats){
            obj = stats;
            var entry = [];
            $.each(obj.playerStatSummaries, function(key, value){
                entry.push(JSON.stringify(key) + ', ' + JSON.stringify(value));
                $("#rankedStats").append($.inArray("RankedSolo5x5", entry));
            });

然而它只返回-1,现在我有点陷入困境......

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法,

$.each(obj.playerStatSummaries, function(index, el){
      if(el.playerStatSummaryType==='RankedSolo5x5'){
        console.log(index);
      }
    });

答案 1 :(得分:0)

对于最简单的任务,一个人不需要jQuery(如果你知道一些基本的javascript,你会找到一个更好的人):

var found = false;
for  (var i = 0; i < obj.playerStatSummaries.length; ++i) {
  var summary = obj.playerStatSummaries[i];
  if  (summary.losses == 'RankedSolo5x5') {
    found = summary;
    break;
  }
}

if (found) {
  // ... do something with it.
}