[英]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;
任何帮助将不胜感激,谢谢。
如果我正确理解了这个问题,那么任务是:
从属性firstName
和lastName
等于所需值的数组中检索第一个匹配的 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.