为什么我在地图箭头函数中不断出现未定义的错误?

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()的工作方式是为数组中的每个元素调用指定的函数,并在不修改原始数组的情况下返回新数组。