写一个函数,根据传入的 id
(如2548)、prop
(属性,如"artist"或"tracks")以及 value
(值,如"Addicted to Love")来修改音乐专辑收藏的数据。
如果属性 prop
不是 "tracks" 且值 value
不为空(""),则更新或设置该专辑属性的值 value
。
你的函数必须始终返回整个音乐专辑集合对象。
处理不完整数据有几条规则:
如果属性prop
是"tracks",但是专辑没有"tracks"属性,则在添加值之前先给"tracks"创建一个空数组。
如果prop
是"tracks",并且值value
不为空(""), 把值value
添加到tracks数组中。
如果值value为空(""),则删除专辑的这一属性prop
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"
}
};
// 在这行下面修改代码
function updateRecords(id, prop, value) {
return collection;
}
// 测试
updateRecords(5439, "artist", "ABBA");
看下我写的对不对,望采纳哦~
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"
}
};
// 在这行下面修改代码, PS 由于函数形参名prop是关键字,会报错的,所以我换成了propKey,要注意规范哦
function updateRecords(id, propKey, value) {
if (!collection[id]) {
collection[id] = {} // 如果传入的id不存在就自动创建一条专辑,如果不需要这个功能就删除这行,改成return
}
if (propKey !== 'tracks' && value) {
// 如果属性 prop 不是 "tracks" 且值 value 不为空(""),则更新或设置该专辑属性的值 value
collection[id][propKey] = value
} else if (propKey === 'tracks' && value) {
// 如果prop是"tracks",并且值value不为空(""), 把值value添加到tracks数组中。
// 如果专辑没有"tracks"属性,则先创建"tracks"属性再添加
collection[id].tracks = [value].concat(collection[id].tracks || [])
} else if (!value) {
// 如果值value为空(""),则删除专辑的这一属性prop
delete collection[id][propKey]
}
return collection
}
// 测试
console.log(updateRecords(5439, "artist", "ABBA"));