簡體   English   中英

提取 JSON 中的特定嵌套數組 與 Javascript 匹配數據的對象

[英]Extract specific nested array in JSON Objects that match data with Javascript

我正在使用 NBA API,其中一個功能是按姓氏查找球員。 我遇到的問題; 當然,多個玩家可以有相同的姓氏。

使用姓氏排序時來自 API 的響應示例:

   "players": [
    0: {
    "firstName":"Anthony"
    "lastName":"Davis"
    "teamId":"17"
    "yearsPro":"9"
    "collegeName":"Kentucky"
    "country":"USA"
    "playerId":"126"
    "dateOfBirth":"1993-03-11"
    "affiliation":"Kentucky/USA"
    "startNba":"2012"
    "heightInMeters":"2.08"
    "weightInKilograms":"114.8"
    
    1: {
    "firstName":"Deyonta"
    "lastName":"Davis"
    "teamId":"14"
    "yearsPro":"3"
    "collegeName":"Michigan State"
    "country":"USA"
    "playerId":"127"
    "dateOfBirth":"1996-12-02"
    "affiliation":"Michigan State/USA"
    "startNba":"2016"
    "heightInMeters":"2.11"
    "weightInKilograms":"107.5"
}

我在這里限制了結果,但它一直在繼續,等等。所以,我想做兩件事:

首先,使用他們的名字和姓氏提取/過濾正確的玩家。 在所述提取中,匹配時我仍然需要完整的數組信息

所以本質上,我想要“Deyonta Davis”,但是當找到時 - 我還需要所述玩家信息的 rest(職業年限、大學、國家等)

我已經設置了一個命令來通過姓氏檢索此 API 中嵌套數據的第一個結果 - 該命令采用您輸入的姓氏並發送第一個結果。 確切的問題是,第一個結果可能不是您要找的人。

目標是包括名字和姓氏,以避免拉錯玩家。

我目前如何通過姓氏調用信息的片段:

// Calling API
    const splitmsg = message.content.split(' ')
    var lastnameurl = "https://api-nba-v1.p.rapidapi.com/players/lastName/" + splitmsg[1];
    axios.get(lastnameurl, {
      headers: {
      "x-rapidapi-key": apikey,
      "x-rapidapi-host": apihost
    }

// Extracting Player Information (first result)
var playerfirstname = response.data.api.players[0].firstName;
var playerlastname = response.data.api.players[0].lastName;
var collegename = response.data.api.players[0].collegeName;
var countryname = response.data.api.players[0].country;
var playerDOB = response.data.api.players[0].dateOfBirth;
var yrspro = response.data.api.players[0].yearsPro;
var startednba = response.data.api.players[0].startNba;

任何幫助將不勝感激,謝謝。

如果我正確理解了這個問題,那么任務是:

從屬性firstNamelastName等於所需值的數組中檢索第一個匹配的 object。

為此,您可以使用 build in find function。

const player = array.find(el => {
  return el.firstName === "Deyonta" && el.lastName === "Davis"
});

請記住,如果數組中沒有這樣的 object ,則player將是undefined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM