我正在尝试从以下位置创建一串艺术家姓名artists
下面显示的数组(即“泰勒·斯威夫特、蕾哈娜、贾斯汀·汀布莱克”),但是artist_obj
未定义,我收到错误“TypeError:无法读取未定义的属性“名称””。我该如何解决?
Code
//Get info for each song
var artists = item["artists"],
artist = "";
var artists_count = 0;
artists.forEach(function(item) {
var artist_obj = item["artists_count"];
if(artists_count !== 0) {
artist = artist + ", " + artist_obj["name"];
} else {
artist += artist_obj["name"];
}
artists_count++;
});
在您的代码中,您正在使用索引访问当前对象item["artists_count"]
。这行不通,因为"artists_count"
是一个字符串,不会传递变量值!你必须使用item[artists_count]
哪个双引号来传递变量!除此之外你的代码没问题!
请注意这个论点,(即item)你正在传递给forEach
是对当前对象的引用,因此不需要保留单独的变量来维护和手动迭代索引。
将您的代码更改为:
var artists = item["artists"],
artist = "";
var artists_count = 0;
artists.forEach(function(item) {
var artist_obj = item;
if(artists_count !== 0) {
artist = artist + ", " + artist_obj["name"];
} else {
artist += artist_obj["name"];
}
artists_count++;
});
更干净的版本是:
var artists = item["artists"],
artist = "";
artists.forEach(function(item) {
artist = artist + item["name"] + ", ";
});
artist = artist.replace(/,\s*$/, "");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)