为啥我在地图箭头功能中不断收到未定义的错误?

Posted

技术标签:

【中文标题】为啥我在地图箭头功能中不断收到未定义的错误?【英文标题】:Why I keep getting undefined error in map arrow function?为什么我在地图箭头功能中不断收到未定义的错误? 【发布时间】:2019-04-09 22:01:50 【问题描述】:

我最近刚开始使用 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]is undefined,在浏览器的控制台中如下所示: res[0] undefined

我要获取的数组是艺术家 ID,如下所示: artist id

我不知道为什么它不断收到未定义的错误。我是 javascript 和使用 API 的新手。这个错误的原因是什么?请帮忙。

【问题讨论】:

这是因为res 不是数组,它是对您正在迭代的数组中当前元素的引用 【参考方案1】:

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

你应该试试这个方法:

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

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

【讨论】:

以上是关于为啥我在地图箭头功能中不断收到未定义的错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 AngularJS 中收到错误“ReferenceError:未定义类别”?

React - 使用外部 URL 时未定义地图功能

不断收到 TypeError:当我单击复选框时无法读取未定义的属性“地图”,不知道问题出在哪里

我收到“未定义的引用”错误,我不明白为啥(C++ OO)

为啥在使用 AJAX/PHP 时收到未定义索引错误?

无法从 nextjs 中的 api 获取图像-TypeError:无法读取未定义的属性(读取“地图”)NEXTJS