Javascript FreeCodeCamp:我被困在了;记录收集“;

Javascript FreeCodeCamp:我被困在了;记录收集“;,javascript,json,Javascript,Json,我正在做Freecodecamp教程,但我被卡住了。编写了以下代码,但不起作用: 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]; ret

我正在做Freecodecamp教程,但我被卡住了。编写了以下代码,但不起作用:

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;
}

请有人能帮帮我

我已经试过这个问题了。下面的解决方案应该有效。我在一行中添加了单独的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)、属性道具(如“艺术家”或“曲目”)和值(如“沉迷于爱情”)来修改此集合中的数据

如果道具不是“曲目”且值不是空(“”),请更新或设置该唱片集属性的值

函数必须始终返回整个集合对象

处理不完整数据有几个规则:

如果prop为“tracks”,但相册没有“tracks”属性,请在将新值添加到相册的相应属性之前创建一个空数组

如果道具为“曲目”且值不为空(“”),请将该值推送到唱片集现有曲目数组的末尾

如果值为空(“”),请从相册中删除给定的道具属性


==========

这个问题我已经试过了。下面的解决方案应该有效。我在一行中添加了单独的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)、属性道具(如“艺术家”或“曲目”)和值(如“沉迷于爱情”)来修改此集合中的数据

如果道具不是“曲目”且值不是空(“”),请更新或设置该唱片集属性的值

函数必须始终返回整个集合对象

处理不完整数据有几个规则:

如果prop为“tracks”,但相册没有“tracks”属性,请在将新值添加到相册的相应属性之前创建一个空数组

如果道具为“曲目”且值不为空(“”),请将该值推送到唱片集现有曲目数组的末尾

如果值为空(“”),请从相册中删除给定的道具属性

=============

您被困在:

if(道具==“音轨”)
集合[id][prop]。推送(值);\ \当集合有一个属性“tracks”时发生,如果没有,则不会发生,对于检查,他们给出的id=5249没有“tracks”。
我认为你应该补充:

if(集合[id].hasOwnProperty(prop)){
集合[id][prop].push(值);
}否则{
集合[id][prop]=[];
集合[id][prop].push(值);`在此处输入代码`
}
如果(道具==“轨迹”)之后

希望它能帮助你解决这个问题

你被困在:

if(道具==“音轨”)
集合[id][prop]。推送(值);\ \当集合有一个属性“tracks”时发生,如果没有,则不会发生,对于检查,他们给出的id=5249没有“tracks”。
我认为你应该补充:

if(集合[id].hasOwnProperty(prop)){
集合[id][prop].push(值);
}否则{
集合[id][prop]=[];
集合[id][prop].push(值);`在此处输入代码`
}
如果(道具==“轨迹”)之后


希望它能帮助你解决这个问题

如果使用所有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;
}

如果使用所有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;
}
我的答案是:

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
}
我的答案是:

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
}

现在它在一个代码块中。请正确格式化。@ChrisMM现在可以了吗?现在它在一个代码块中。请正确格式化。@ChrisMM现在可以了吗?