为什么我在地图箭头函数中不断出现未定义的错误?
Why I keep getting undefined error in map arrow function?
我最近刚刚开始一个利用 Spotify API 的项目。我一直在尝试使用我编写的代码提取艺术家的 ID:
app.events = function() {
$('form').on('submit', function(e) {
e.preventDefault();
let artists = $('input[type=search]').val();
artists = artists.split(',');
let search = artists.map(artistName => app.searchArtist(artistName));
$.when(...search)
.then((...results) => {
results = results.map(res => res[0].artists.items[0].id);
console.log(results);
});
});
app.searchArtist = (artistName) => $.ajax({
url: 'https://api.spotify.com/v1/search',
headers: {
'Authorization': 'Bearer ' + accessToken
},
method: 'GET',
dataType: 'json',
data: {
type: 'artist',
q: artistName
}
这一行有问题:
results = results.map(res => res[0].artists.items[0].id);
每次我尝试 运行 代码时,它都会返回 res[0]
未定义,在浏览器的控制台中如下所示:
res[0] undefined
我要获取的数组是艺术家 ID,如下所示:
artist id
不知道为什么一直报未定义的错误。我是 javascript 的新手,正在使用 API。这个错误的原因是什么?请帮忙
问题似乎是在 res.
中没有 0 键时尝试访问 res[0]
你应该试试这个方法:
results = results.map(res => res.artists.items[0].id);
Array.prototype.map()的工作方式是为数组中的每个元素调用指定的函数,并在不修改原始数组的情况下返回新数组。
我最近刚刚开始一个利用 Spotify API 的项目。我一直在尝试使用我编写的代码提取艺术家的 ID:
app.events = function() {
$('form').on('submit', function(e) {
e.preventDefault();
let artists = $('input[type=search]').val();
artists = artists.split(',');
let search = artists.map(artistName => app.searchArtist(artistName));
$.when(...search)
.then((...results) => {
results = results.map(res => res[0].artists.items[0].id);
console.log(results);
});
});
app.searchArtist = (artistName) => $.ajax({
url: 'https://api.spotify.com/v1/search',
headers: {
'Authorization': 'Bearer ' + accessToken
},
method: 'GET',
dataType: 'json',
data: {
type: 'artist',
q: artistName
}
这一行有问题:
results = results.map(res => res[0].artists.items[0].id);
每次我尝试 运行 代码时,它都会返回 res[0]
未定义,在浏览器的控制台中如下所示:
res[0] undefined
我要获取的数组是艺术家 ID,如下所示: artist id
不知道为什么一直报未定义的错误。我是 javascript 的新手,正在使用 API。这个错误的原因是什么?请帮忙
问题似乎是在 res.
中没有 0 键时尝试访问 res[0]你应该试试这个方法:
results = results.map(res => res.artists.items[0].id);
Array.prototype.map()的工作方式是为数组中的每个元素调用指定的函数,并在不修改原始数组的情况下返回新数组。