获取带有下划线的数组中的对象.js

Get object in array with underscore.js

本文关键字:对象 js 数组 获取 下划线      更新时间:2023-09-26

我有一个函数,它有一个相当复杂的对象,格式如下:

function getNBATeamsESPNByAbbrev(abbrev)
{
    var json = {
   "sports":[
      {
         "name":"basketball",
         "id":40,
         "uid":"s:40",
         "leagues":[
            {
               "name":"National Basketball Assoc.",
               "abbreviation":"nba",
               "id":46,
               "uid":"s:40~l:46",
               "groupId":7,
               "shortName":"NBA",
               "teams":[
                  {
                     "id":1,
                     "uid":"s:40~l:46~t:1",
                     "location":"Atlanta",
                     "name":"Hawks",
                     "abbreviation":"ATL",
                  },
                  {
                     "id":2,
                     "uid":"s:40~l:46~t:2",
                     "location":"Boston",
                     "name":"Celtics",
                     "abbreviation":"BOS",
                     "color":"006532", 
                  },
               ]
            }
         ]
      }
   ],
   "resultsOffset":0,
   "resultsLimit":50,
   "resultsCount":30,
   "timestamp":"2014-03-22T23:42:43Z",
   "status":"success"
    }   
    obj = _.find(json.sports[0].leagues[0].teams, function(obj) { return obj.abbreviation == abbrev })
    if (obj !== undefined)
    {   
        var team = new Object();
        team.abbrev = abbrev;
        team.location = obj.location;
        team.nickname = obj.name;
                return team;
    }

}

在这个示例JSFiddle中可以更容易地看到

。所以我有了团队缩写,我想把团队对象作为一个整体拉回来(这是一个简化的版本,只留下必要的细节)。这似乎工作得很好。然而,出现了另一种情况,在这种情况下,我需要根据其location + " " + name拉回团队对象。所以我试着用下划线做同样的事情,传入参数name,并将._find中的谓词更改为return obj.location + " " + obj.name == name。例如,我将Atalnta Hawks作为name传入,并期望返回相关的团队对象。下面是一个非常相似的JSFiddle,它演示了这个更改。但是,现在它似乎找不到我想拉的团队对象。是因为在underscore.js中不允许这样的字符串连接,还是我遗漏了什么愚蠢的东西?

第50行,有:

team.abbrev = obj.abbrev;

应该是

team.abbrev = obj.abbreviation;