Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery基于值的JSON迭代_Javascript_Jquery_Json - Fatal编程技术网

Javascript 使用jquery基于值的JSON迭代

Javascript 使用jquery基于值的JSON迭代,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',functio

我正在尝试使用以下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
$(文档).ready(函数(){
$.getJSON('http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json,函数(信息){
var eastHead=info.sta.co[0].val;
var divi=info.sta.co[0].di[0].val;
/*评估东方*/
对于(i=0;i';
document.getElementById(“eastHead”).innerHTML=eastHead;
}
var seed=info.sta.co[0].di[0].t[0]。请参阅;
$.each(menuItems.data,函数(i){
var eastSeed='
  • '+seed+'
  • '; console.log(eastSeed) document.getElementById(“eastSeed”).innerHTML=eastSeed; })/$每个(menuItems.data,函数(i){ });//获取JSON });//准备好了吗
    我只是想按顺序列出领导者。所以现在我们有

  • 金州2.孟菲斯3.休斯顿4.波特兰5.洛杉矶快船6.达拉斯等等 第四
  • 这是基于“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
    
    $(文档).ready(函数(){
    $.getJSON('http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json,函数(信息){
    /**************************************************/
    //在这里获取以上信息
    var westDivision=info.sta.co[1].di;
    西部分部。forEach(职能(分部)
    {
    分部:t.forEach(职能部门(团队)
    {
    推({
    城市:team.tc,
    名称:team.tn,
    种子:团队。见
    });
    });
    });
    功能比较(a、b){
    如果(a.见b.见)
    返回1;
    返回0;
    }
    var sorted=westTeams.sort(比较);
    forEach(函数(el,i)
    {
    控制台日志(i+'..+el.city+'.+el.name);
    });
    /**************************************************/    
    });//获取JSON
    });//准备好了吗
    
    控制台输出:

  • 波特兰开拓者队
  • 俄克拉荷马城雷霆
  • 丹佛掘金
  • 犹他爵士音乐
  • 明尼苏达森林狼
  • 金州勇士队
  • 洛杉矶快船队
  • 凤凰城太阳队
  • 萨克拉门托国王酒店
  • 洛杉矶湖人队
  • 孟菲斯灰熊队
  • 休斯顿火箭队
  • 达拉斯小牛队
  • 圣安东尼奥马刺队
  • 新奥尔良鹈鹕

  • 我喜欢使用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);
    

    查询大型JavaScript对象图可能是一件乏味的事情,特别是如果您想要动态输出的话。实现对不同筛选条件、排序顺序、“前N个”限制、分页的支持可能会很困难。而且无论您提出什么,都会变得不灵活

    为了涵盖这些情况,您可以(如果您不介意学习曲线的话)使用(),这是一个实现.NET的LINQforJavaScript的库

    下面展示了你能用它做些什么。请耐心等待

    准备

    您的NBA数据对象遵循父子层次结构,但它遗漏了一些基本内容:

    • 没有父级引用
    • 包含子级的属性在每个级别上的调用都不同(即
      co
      di
      t
    为了使整个过程统一(因此是可遍历的),我们首先需要从中构建一个节点树。树节点将从输入图中包装对象,如下所示:

    {
        obj: o,       /* the original object, e.g. sta.co[1]               */
        parent: p,    /* the parent tree node, e.g. the one that wraps sta */
        children: []  /* array of tree nodes built from e.g. sta.co[1].di  */
    }
    
    该结构的构建可以在一个函数中递归完成:

    function toNode(obj) {
        var node = {
                obj: obj,
                parent: this === window ? null : this,
                // we're interested in certain child arrays, either of:
                children: obj.co || obj.di || obj.t || []
            };
    
        // recursive step (with reference to the parent node)
        node.children = node.children.map(toNode, node);
    
        // (*) explanation below
        node.parents = Enumerable.Return(node.parent)
            .CascadeDepthFirst("$ ? [$.parent] : []").TakeExceptLast(1);
    
        return node;
    }
    
    (*)
    节点。parents
    属性是一个方便的工具。它包含除最后一个(即根节点,即
    null
    )之外的所有父节点的枚举。此枚举可用于筛选,如下所示

    此函数的结果是一个漂亮且统一的节点互连树。(展开代码段,但遗憾的是,由于同源浏览器的限制,它当前未运行。可能需要首先打开NBA REST API中的某些内容。)

    函数toNode(obj){
    变量节点={
    obj:obj,
    父项:this==窗口?null:this,
    儿童:obj.co | | obj.di | | obj.t | |【】
    };
    node.children=node.children.map(toNode,node);
    node.parents=Enumerable.Return(node.parent)
    .CascadeDepthFirst(“$?[$.parent]:[]”)。TakeExceptLast(1);
    返回节点;
    }
    $(函数(){
    var standingsUrl=http://data.nba.com/data/v2014/json/mobile_teams/nba/2014/00_standings.json';
    $.getJSON(标准URL,函数(结果){
    var sta=toNode(result.sta);
    控制台日志(sta);
    });
    });

    感谢您的回复。不过我收到的是“WestTeam未定义”。不确定这是指什么
    function toNode(obj) {
        var node = {
                obj: obj,
                parent: this === window ? null : this,
                // we're interested in certain child arrays, either of:
                children: obj.co || obj.di || obj.t || []
            };
    
        // recursive step (with reference to the parent node)
        node.children = node.children.map(toNode, node);
    
        // (*) explanation below
        node.parents = Enumerable.Return(node.parent)
            .CascadeDepthFirst("$ ? [$.parent] : []").TakeExceptLast(1);
    
        return node;
    }