@Anna23b
Учусь программировать

Как решить задачу с массивами на JS?

Есть задача. Смутно понимаю, что решать еe нужно методами push и delete, но два дня сижу, ничего толкового изобразить не могу.
____
Напишите функцию, которая принимает в качестве параметров: id - уникальный номер альбома (например, 2548), prop - имя свойства (например, "artist" или "tracks") и value - новое значение свойства (например, "Addicted to Love") для изменения данных внутри коллекции.

Если prop содержит значение не равное "tracks" и value тоже содержит значение (не пустую строку ""), то установите новое значение value свойству с именем prop в альбоме.

Несколько правил для обработки случаев, когда некоторые данные отсутствуют:

Если prop содержит значение "tracks", но в альбоме отсутствует свойство "tracks", то создайте пустой массив, присвойте этот массив отсутствующему свойству в альбоме и добавьте в него новое значение.

Если prop содержит значение "tracks" и value тоже содержит значение (не пустую строку ""), добавьте value в конец существующего массива tracks.

Если value содержит пустую строку (""), удалите переданное свойство prop из альбома.

Созданная вами функция должна всегда возвращать объект коллекции.

Входные данные:

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

var collectionCopy = JSON.parse(JSON.stringify(collection));

function updateRecords(id, prop, value) {
  
  return collection;
}

updateRecords(5439, "artist", "ABBA");
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
все правила мне лень читать и описывать, но по быстрому - как то так:
function updateRecords(id, prop, value) {
  if(collection.hasOwnProperty(id))if(prop!="tracks"){
    if(value!=""){collection[id][prop]=value;}else{delete(collection[id][prop])}
  }else{
    if(!collection[id].hasOwnProperty("tracks"))collection[id]["tracks"]=[];
    if(value!="")collection[id]["tracks"].push(value)
  }
  return collection;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы