gpt4 book ai didi

javascript - 当 ID 不同时将各个对象打印到 DOM

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:17 25 4
gpt4 key购买 nike

我正在开发一个 JavaScript Web 应用程序,该应用程序接受用户(音乐艺术家的姓名)的输入,并输出由 Spotify API 确定的相关艺术家及其最受欢迎的歌曲的列表。我最初有这个功能的基本版本,但它只会发布所有相关艺术家的列表,并在其上方紧接着列出这些相关艺术家最受欢迎的歌曲,我希望打印出整个对象(艺术家加上大多数流行歌曲)。

我有一系列代表我通过spotify-web-api-js收到的艺术家的元素。 Node 模块与 Node.js 和 Browserify 一起使用,使其在浏览器上运行,由 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 中。我的 latedArtistsObject 的 console.log 输出如下所示,例如:

enter image description here

当我现在不知道 Spotify ID 时,如何通过代码访问 DOM 中的这些对象?

注意:我知道我还没有进行错误处理,但我希望能够首先实现主要功能。

最佳答案

您可以使用for in或使用Object.keys

前者将迭代对象的每个可枚举属性名称,并将该名称设置到指定的变量中。然后,您可以使用该名称来访问该对象的属性值。

后者将返回对象属性名称的数组。然后,您可以使用常规 for 循环来迭代该数组,并将数组中的每个值用作 id

对于...在

for(id in relatedArtistsObject){
var artist = relatedArtistsObject[id];
console.log(artist.name,artist.songs);
}

对象.key

var ids = Object.keys(relatedArtistsObject);
for(var i=0; i<ids.length; i++){
var artist = relatedArtistsObject[ids[i]];
console.log(artist.name,artist.songs);
}

关于javascript - 当 ID 不同时将各个对象打印到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com