Это тест на freecodecamp.com, и я просто хочу знать, мог ли я написать это попроще или это нормально?
function updateRecords(id, prop, value) {
if (prop !== "tracks" && value !== "") {
collection[id][prop] = value;
}
else if (prop == "tracks" && collection[id].hasOwnProperty(prop) === false){
collection[id][prop] = [];
collection[id][prop].push(value);
}
else if (prop == "tracks" && value !== ""){
collection[id][prop].push(value);
}
else if (value === ""){
delete collection[id][prop];
}
return collection;
}
updateRecords(2468, "tracks", "Free");
Наверное, лучший форум для этого: codereview.stackexchange.com
Вы бы хотели его протестировать, но мне кажется, что collection[id].hasOwnProperty(prop) === false лучше выразить как !collection[id][prop].
что происходит с track с пустым value? можно ли удалить весь массив?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте проверить props === 'tracks' only once
function updateRecords(id, prop, value) {
if (prop !== "tracks" && value !== "") {
collection[id][prop] = value;
}
else if (prop === 'tracks'){
if (collection[id].hasOwnProperty(prop) === false){
collection[id][prop] = [];
collection[id][prop].push(value);
}
else if (value !== "" ){
collection[id][prop].push(value);
}
}
else if (value === ""){
delete collection[id][prop];
}
return collection;
}
У вас есть ошибки в блоке треков else if. Непустой value будет добавлен дважды. И вы можете полностью удалить первый вызов collection[id][prop].push(value);.
Ваше последнее состояние
else ifможет быть удалено в пользу толькоelse.