为什么我在地图箭头功能中总是收到未定义的错误?

时间:2018-11-06 13:41:01

标签: javascript jquery api spotify

我最近刚开始一个利用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

我不知道为什么它不断出现未定义的错误。我是Java语言和API的新手。此错误的原因是什么?请帮助。

1 个答案:

答案 0 :(得分:0)

res 中没有 0 键时,问题似乎是试图访问res [0]。

您应该尝试这种方法:

results = results.map(res => res.artists.items[0].id);

Array.prototype.map()的工作方式是为数组中的每个元素调用指定的函数,然后返回新数组而不修改原始数组。