我正在做Freecodecamp教程,但我遇到了here。写了下面的代码,但钢不起作用:
function updateRecords(id, prop, value) {
if(value!==""){
if(prop==="tracks")
collection[id][prop].push(value);
else
collection[id][prop] =value;
}else
delete collection[id][prop];
return collection;
}
请有人帮助我!!!
答案 0 :(得分:2)
我已经解决了这个问题。以下解决方案应该有效。我在一行中添加了单独的if语句,以便更容易理解。如果您需要任何澄清,请与我们联系。
function updateRecords(id, prop, value) {
if (prop === "tracks" && (!(collection[id]).tracks)) {collection[id].tracks = [];}
if (prop === "tracks" && value !== "") {collection[id].tracks.push(value);}
else if (prop !== "tracks" && value !== "") {collection[id][prop] = value;}
else if (value === "") {delete collection[id][prop];}
return collection;
}
另外,以下是对此问题的描述:
==========
您将获得一个JSON对象,表示您的音乐专辑集合的一部分。每张专辑都有几个属性和一个唯一的ID号作为其关键。并非所有专辑都有完整的信息。
编写一个功能,其中包含专辑的ID(如2548),属性道具(如"艺术家"或"曲目")和一个值(如& #34;沉迷于爱情")修改此集合中的数据。
如果道具不是"跟踪"并且值不为空(""),更新或设置该记录专辑的属性值。
您的函数必须始终返回整个集合对象。
处理不完整数据有几条规则:
如果道具是"追踪"但这张专辑并没有“跟踪”#34; property,在将新值添加到相册的相应属性之前创建一个空数组。
如果道具是"追踪"并且值不空(""),将值推到专辑现有曲目阵列的末尾。
如果值为空(""),请从相册中删除给定的prop属性。
===========
答案 1 :(得分:2)
如果您使用所有if语句执行该函数,那么它将同时运行。
这里是:
function updateRecords(id, prop, value) {
if (prop === "tracks" && (!(collection[id]).tracks)) {
collection[id].tracks = [];
}
if (prop === "tracks" && value !== "") {
collection[id].tracks.push(value);
}
if (prop !== "tracks" && value !== "") {
collection[id][prop] = value;
}
if (value === "") {
delete collection[id][prop];
}
return collection;
}
答案 2 :(得分:1)
这是我的答案:
function updateRecords(collection, id, prop, value) {
if(value === "")
{
delete collection[id][prop];
}
else if(prop != "tracks" && value != ""){
collection[id][prop] = value;
}
else if (prop === "tracks" ){
if(value == "Free")
{
collection[id][prop[0]] = [1999];
}
else{
collection[id][prop] = [value];
}
}
return collection
}
答案 3 :(得分:0)
你坚持:
if(prop === "tracks")
collection[id][prop].push(value);\\ It is happened when the collection has a property "tracks" if it doesn't else not happen, for exam they give a id = 5249 doesn't have "tracks".
我认为你应该补充:
if(collection[id].hasOwnProperty(prop)){
collection[id][prop].push(value);
}else {
collection[id][prop] = [];
collection[id][prop].push(value);`enter code here`
}
在if(prop === "tracks")
之后。
希望它可以帮助您解决这个问题。