我有一段代码,用于更新表示音乐专辑集合的 json 对象中的记录。此处编写的函数更新给定专辑 ID、属性(“tracks”)和值(“albumName”)的记录
我得到的错误如下:
"message": "Uncaught TypeError: collection[id][prop].push is not a function",
var collection = {
"2548": {
"album": "Slippery When Wet",
"artist": "Bon Jovi",
"tracks": [
"Let It Rock",
"You Give Love a Bad Name"
]
},
"2468": {
"album": "1999",
"artist": "Prince",
"tracks": [
"1999",
"Little Red Corvette"
]
},
"1245": {
"artist": "Robert Palmer",
"tracks": [ ]
},
"5439": {
"album": "ABBA Gold"
}
};
// Only change code below this line
function updateRecords(id, prop, value) {
if(!value){
delete collection[id][prop];
return collection;
}
if(prop === "tracks"){
if(!collection[id].hasOwnProperty('tracks')){
collection[id].tracks="";
}
if(value){
collection[id][prop].push(value);
}
} else {
collection[id][prop] = value;
}
return collection;
}
updateRecords(5439, "tracks", "Take a Chance on Me");
其他一些测试用例场景
最佳答案
+1 用于提供重现问题的工作示例。
问题出在 collection[id].tracks=""
行上,它应该是 collection[id].tracks=[]
请参阅下面更新的示例:
var collection = {
"2548": {
"album": "Slippery When Wet",
"artist": "Bon Jovi",
"tracks": [
"Let It Rock",
"You Give Love a Bad Name"
]
},
"2468": {
"album": "1999",
"artist": "Prince",
"tracks": [
"1999",
"Little Red Corvette"
]
},
"1245": {
"artist": "Robert Palmer",
"tracks": [ ]
},
"5439": {
"album": "ABBA Gold"
}
};
// Only change code below this line
function updateRecords(id, prop, value) {
if(!value){
delete collection[id][prop];
return collection;
}
if(prop === "tracks"){
if(!collection[id].hasOwnProperty('tracks')){
collection[id].tracks=[];
}
if(value){
collection[id][prop].push(value);
}
} else {
collection[id][prop] = value;
}
return collection;
}
updateRecords(5439, "tracks", "Take a Chance on Me");
console.log(collection[5439])
关于JavaScript : typeerror not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48919511/