Почему я продолжаю получать неопределенную ошибку в функции стрелки карты? - PullRequest
0 голосов
/ 06 ноября 2018

Я недавно только начал проект, который использует Spotify API. Я пытался извлечь идентификаторы художника с помощью кода, который я написал:

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

Массив, который я пытаюсь получить, это идентификатор исполнителя, как показано: идентификатор исполнителя

Я не знаю, почему он продолжает получать неопределенную ошибку. Я новичок в JavaScript и использую API. В чем причина этой ошибки? Помогите пожалуйста.

1 Ответ

0 голосов
/ 06 ноября 2018

Похоже, проблема связана с попыткой доступа к res [0], если в res .

нет клавиши 0 .

Вы должны попробовать этот подход:

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

Способ Array.prototype.map () работает путем вызова указанной функции для каждого элемента массива и возврата нового массива без изменения оригинала.

...