Мог бы я написать это проще?

Это тест на 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");

Ваше последнее состояние else if может быть удалено в пользу только else.

Michael Elliott 09.04.2018 07:25

Наверное, лучший форум для этого: codereview.stackexchange.com

Mark 09.04.2018 07:26

Вы бы хотели его протестировать, но мне кажется, что collection[id].hasOwnProperty(prop) === false лучше выразить как !collection[id][prop].

lucas 09.04.2018 07:28

что происходит с track с пустым value? можно ли удалить весь массив?

Nina Scholz 09.04.2018 09:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
64
1

Ответы 1

Попробуйте проверить 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);.

fubar 09.04.2018 07:32

Другие вопросы по теме