javascript - 使用 jquery 基于值的 JSON 迭代

标签 javascript jquery json

我正在尝试使用以下 json 文件按种子顺序创建 NBA 西部领袖的简单显示:

http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json

现在我有以下内容:

$(document).ready(function() {

$.getJSON('http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json',function(info){

    var eastHead = info.sta.co[0].val;
    var divi = info.sta.co[0].di[0].val;

    /*evaluate East*/
    for(i=0;i < divi.length;i++){

        var visTeam ='<li>' + divi + '</li>';
         document.getElementById("eastHead").innerHTML=eastHead;
    }
    var seed = info.sta.co[0].di[0].t[0].see;


                    $.each(menuItems.data, function (i) {
                        var eastSeed ='<li>' + seed + '</li>';
                        console.log(eastSeed)
                        document.getElementById("eastSeed").innerHTML=eastSeed;
                    });//$.each(menuItems.data, function (i) {

});//getJSON

});//ready

我只想按顺序列出领导者。所以现在我们有

  1. Golden State
    2. Memphis
    3. Houston
    4. Portland
    5. L.A. Clippers
    6. Dallas
    .... and so forth.

这是基于“see”的值,在西方意味着种子。

这个问题是我得到的是单个值而不是迭代值。

更新:

$(document).ready(function() {

$.getJSON('http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json',function(info){



                    /**************************************************/
                        //Get info above here
                        var westDivision = info.sta.co[1].di;
                        westDivision.forEach(function (subdivision)
                        {
                            subdivision.t.forEach(function (team)
                            {
                                westTeams.push({
                                    city: team.tc,
                                    name: team.tn,
                                    seed: team.see
                                });
                            });
                        });
                        function compare(a,b) {
                          if (a.see < b.see)
                             return -1;
                          if (a.see > b.see)
                            return 1;
                          return 0;
                        }
                        var sorted = westTeams.sort(compare);
                        sorted.forEach(function (el,i)
                        {
                            console.log(i+'. '+el.city+' '+el.name);
                        });
                        /**************************************************/    

});//getJSON

});//ready

控制台输出:

  1. 波特兰开拓者队
  2. 俄克拉荷马雷霆队
  3. 丹佛掘金队
  4. 犹他爵士
  5. 明尼苏达森林狼队
  6. 金州勇士队
  7. 洛杉矶快船队
  8. 菲尼克斯太阳队
  9. 萨克拉门托国王队
  10. 洛杉矶湖人队
  11. 孟菲斯灰熊队
  12. 休斯顿火箭队
  13. 达拉斯小牛队
  14. 圣安东尼奥马刺队
  15. 新奥尔良鹈鹕

最佳答案

我喜欢使用 forEach 进行迭代。不必担心索引,您可以直接引用数组的每个项目。

使用此代码,您可以将所需数据放入数组中。

//Get info above here
var westTeams = [];
var westDivision = info.sta.co[1].di;

westDivision.forEach(function (subdivision)
{
    subdivision.t.forEach(function (team)
    {
        westTeams.push({
            city: team.tc,
            name: team.tn,
            seed: team.see
        });
    });
});

然后您可以使用 obj.sort 对它们进行排序

function compare(a,b) {
  if (a.seed < b.seed)
     return -1;
  if (a.seed > b.seed)
    return 1;
  return 0;
}
var sorted = westTeams.sort(compare);

最后,您可以按顺序打印它们。

sorted.forEach(function (el,i)
{
    console.log((i+1)+'. '+el.city+' '+el.name);
});

关于javascript - 使用 jquery 基于值的 JSON 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662321/

相关文章:

JavaScript 传递元素但接收窗口?

javascript - D3js - 使用 d3.json 从 "JSON data"输入获取绘制的折线图

javascript - 通过 javascript 访问 id 属性

javascript - 使用 jsPDF 将页脚添加到 pdf

javascript - jQuery 热键只工作一次

java - 用java解析JSON树

javascript - TypeScript:使用函数参数作为 JSON 键名称

javascript - Bootstrap 开关不适用于动态创建的复选框输入

javascript - 减少嵌套数组中的元素

Jquery 标签内容(显示问题)