调试JavaScript Freecodecamp挑战

时间:2018-08-10 22:55:22

标签: javascript

这个挑战让我很困惑,我真的不明白为什么我的代码无法正常工作。挑战来自Freecodecamp的“基本JavaScript:记录收集”。

挑战在于:

  

”如果value参数不是空字符串,请更新(或设置)prop参数的value参数。   如果prop参数等于“ tracks”,并且该值不是空字符串,则将其值推入tracks数组的末尾。   如果value是一个空字符串,请从对象中删除该道具。   最后,返回收集对象。

代码:

 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) {

  if (prop === "tracks" && value !== "") {
    if (collection.id.hasOwnProperty(prop)) {
    collection[id][prop].push(value);
    }
  else {
    collection.id.prop = [value];
  }
}

  else if (value !== "") {
    collection.id.prop = value;
  }

  else {
    delete collection.id.prop;
  }

  return collection;
}

// Alter values below to test your code
updateRecords(2468, "tracks", "ABBA");

1 个答案:

答案 0 :(得分:0)

尝试一下,为清楚起见,我添加了评论。如果您听不懂,请告诉我。

let once = false;

    let newPassword = Math.random().toString(36).substr(2, 8).split('').map((char) => {
                    if(!Number(char) && !once){
                        once = true;
                        return char.toUpperCase();
                    }
                    return char;
                }).join('');

    console.log(newPassword)