【发布时间】:2015-12-31 16:50:48
【问题描述】:
我正在开发一个 JavaScript 网络应用程序,该应用程序接受用户的输入(音乐艺术家的姓名)并输出相关艺术家的列表以及他们最受欢迎的歌曲,由 Spotify API 确定。我最初有这个功能的基本版本,但它只会发布所有相关艺术家的列表,并在其上方列出这些相关艺术家最受欢迎的歌曲,我希望打印出整个对象(艺术家加上大多数流行歌曲)。
我有一系列代表艺术家的对象,这些对象是我通过带有 Node.js 和 Browserify 的 spotify-web-api-js 节点模块收到的,以使其在浏览器上运行,由他们的 Spotify ID 唯一标识。如果在用户进行搜索之前我事先不知道这些 ID,我该如何循环它们,以便我可以正确地将它们推送到一个对象中,然后我可以通过 jQuery 的append 将它们输入到 DOM?我一直在尝试以各种方式访问它们,但它似乎不起作用:
s.getArtistRelatedArtists(originalArtistId, function(err, data) {
for (i = 0; i < data.artists.length; i++)
{
console.log(data.artists[i].name);
relatedArtistsObject[data.artists[i].id] = {
name: data.artists[i].name,
songs: []
};
s.getArtistTopTracks(data.artists[i].id, "US", function (err, data2) {
if (relatedArtistsObject[data2.tracks[0].artists[0].id] !== undefined)
{
// console.log(data2.tracks[0].name); -- this outputs the song titles I want
relatedArtistsObject[data2.tracks[0].artists[0].id].songs.push(data2.tracks[0].name);
}
});
}
console.log(relatedArtistsObject);
// loop through this object and print it through the screen
for (k = 0; k < relatedArtistsObject.length; k++)
{
console.log(relatedArtistsObject.id.songs[0].name);
$('#related-artist').append(relatedArtistsObject[k]);
}
// $('#related-artist').append(relatedArtistsObject);
});
这里是完整代码的链接(因为没有启用 Node.js/browserify 而无法运行):https://jsfiddle.net/pmh04e99/
This answer 部分有用,但不适用于此处,因为 JSON 输出在我要访问的数组中没有“名称”字段。相反,songs 是一个 1 的数组,我想要的内容在项目 0 内。我的relatedArtistsObject 的console.log 输出如下所示,例如:
当我现在不知道 spotify ID 时,如何通过我的代码访问 DOM 中的这些对象?
注意:我知道我还没有进行错误处理,但我希望能够先实现主要功能。
【问题讨论】:
标签: javascript jquery json node.js spotify