我对JavaScript
IF 语句的对象值更新有疑问。它在代码中间显示错误。请建议。如果您需要更多信息,请查看底部以获取有关该项目的更多信息。
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"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
var collection;
if (prop != "tracks" && value.length != 0) {
collection[id][prop] = value;}
else if(prop === "tracks" && collection[id].hasOwnProperty(tracks) === false){
collection[id].prop = [];}
else if(prop === "tracks" && value != ""){
collection[id][prop].push(value);}
else if (value ===""){
delete collection[id][prop];}
return collection;
};
您将获得一个 JSON 对象,该对象代表您的音乐专辑收藏的一部分。每个专辑都有几个属性和一个唯一的 ID 号作为其键。并非所有专辑都有完整的信息。
编写一个函数,它接受专辑的 id(如 2548)、属性 prop(如“艺术家”或“曲目”)和值(如“爱上瘾”)来修改此集合中的数据。
如果 prop 不是 "tracks" 并且 value 不为空 (""),则更新或设置该唱片专辑属性的值。
您的函数必须始终返回整个集合对象。
处理不完整数据有几条规则:
如果 prop 是“tracks”但专辑没有“tracks”属性,则在将新值添加到专辑的相应属性之前创建一个空数组。
如果 prop 是 "tracks" 并且 value 不为空 (""),则将 value 推送到专辑现有曲目数组的末尾。
如果 value 为空 (""),则从相册中删除给定的 prop 属性。
提示:
使用变量访问对象属性时使用括号表示法。
Push 是一种数组方法,您可以在 Mozilla Developer Network 上阅读。
您可以参考操作复杂对象介绍 JavaScript 对象表示法 (JSON) 进行复习。