未捕获:TypeError

时间:2018-05-31 20:57:11

标签: javascript arrays typeerror

我试图将iTunes搜索到我的应用程序,我遇到了过滤方法的问题, 我把iTunes API带到了Array,现在我想用歌曲的标题来过滤那个Array。我不明白一件事,为什么控制台显示:

Uncaught TypeError: songs.filter is not a function
    at findSongs (script.js:10)
    at <anonymous>:1:1<br><br>

const endpoint = 'https://itunes.apple.com/search?term=jack+johnson&entity=song';
let songs = [];
fetch(endpoint)
    .then(blob => blob.json())
    .then(data => songs = data);
function findSongs(wordToMatch, songs){
    return songs.filter(title => {
        const regex = new RegExp(wordToMatch, 'gi');
        return title.trackName.match(regex)
    });
};

我在这个问题上挣扎了2个小时而且我遇到了困难。
任何想法?非常感谢你

1 个答案:

答案 0 :(得分:3)

端点返回一个对象,该对象保存results属性中的所有歌曲详细信息(作为数组)。

E.g。 {count : 2, results: [ {}, {} ]}

尝试.then(data => songs = data.results);

const endpoint = 'https://itunes.apple.com/search?term=jack+johnson&entity=song';
let songs = [];
fetch(endpoint)
    .then(blob => blob.json())
    .then(data => songs = data.results);