处理 JavaScript api 未定义的响应 属性 '0'
Handle JavaScript api response property '0' of undefined
我是初学者,正在尝试从 API 中获取数据。当我尝试映射响应值时,它的某些特定键的值是未定义的,它会抛出错误 Cannot read 属性 '0' of undefined 我已经尝试了各种方法,但对我没有任何作用。
这是代码
const showEverything=(artist, album,mytracks) => {
let everythingObj={
name :[],
title :[],
album :[],
id :[]
}
// push the artist search result to my everythingObj
const recordings=artist.recordings;
recordings.map((record) => {
const { "artist-credit": credit } = record;
//here it shows the error
const { "release-group": album } = record.releases[0]
everythingObj.name.push(credit[0].name);
everythingObj.title.push(record.title);
everythingObj.album.push(album.title);
everythingObj.id.push(record.releases[0].id);
})
有时 API 并不是我们期望的 return 数组。
您可以输入一个 if (condition)
来先检查它是否存在。
if (recordings.releases) {
/* your code */
}
else {
console.log('Blank response from API')
}
有多种方法,但一种方法是您可以进行检查
if(record && record.releases && record.releases[0])
const { "release-group": album } = record.releases[0]
credit[0] && credit[0].name && everythingObj.name.push(credit[0].name);
record && record.title && everythingObj.title.push(record.title);
album && album.title && everythingObj.album.push(album.title);
record && record.releases[0] && record.releases[0].id && everythingObj.id.push(record.releases[0].id);
您可以根据自己的使用情况对以上条件进行进一步简化。
通过上述检查,如果数据不存在,它不会将数据推送任何值也将解决错误。
我是初学者,正在尝试从 API 中获取数据。当我尝试映射响应值时,它的某些特定键的值是未定义的,它会抛出错误 Cannot read 属性 '0' of undefined 我已经尝试了各种方法,但对我没有任何作用。 这是代码
const showEverything=(artist, album,mytracks) => {
let everythingObj={
name :[],
title :[],
album :[],
id :[]
}
// push the artist search result to my everythingObj
const recordings=artist.recordings;
recordings.map((record) => {
const { "artist-credit": credit } = record;
//here it shows the error
const { "release-group": album } = record.releases[0]
everythingObj.name.push(credit[0].name);
everythingObj.title.push(record.title);
everythingObj.album.push(album.title);
everythingObj.id.push(record.releases[0].id);
})
有时 API 并不是我们期望的 return 数组。
您可以输入一个 if (condition)
来先检查它是否存在。
if (recordings.releases) {
/* your code */
}
else {
console.log('Blank response from API')
}
有多种方法,但一种方法是您可以进行检查
if(record && record.releases && record.releases[0])
const { "release-group": album } = record.releases[0]
credit[0] && credit[0].name && everythingObj.name.push(credit[0].name);
record && record.title && everythingObj.title.push(record.title);
album && album.title && everythingObj.album.push(album.title);
record && record.releases[0] && record.releases[0].id && everythingObj.id.push(record.releases[0].id);
您可以根据自己的使用情况对以上条件进行进一步简化。
通过上述检查,如果数据不存在,它不会将数据推送任何值也将解决错误。