Задать вопрос
@ahillesius

Ответьте на вопрос (комментарий в коде) и поправьте утверждения (далее в тексте)?

Прохожу задачки freecodecamp (объекты)

Условие задачи
You start with an updateRecords function that takes an object literal, records, containing the musical album collection, an id, a prop (like artist or tracks), and a value. Complete the function using the rules below to modify the object passed to the function.

Your function must always return the entire record collection object.
If prop isn't tracks and value isn't an empty string, update or set that album's prop to value.

If prop is tracks but the album doesn't have a tracks property, create an empty array and add value to it.

If prop is tracks and value isn't an empty string, add value to the end of the album's existing tracks array.

If value is an empty string, delete the given prop property from the album.

Note: A copy of the recordCollection object is used for the tests.

Вот рабочий код.
// Setup
const recordCollection = {
  2548: {
    albumTitle: 'Slippery When Wet',
    artist: 'Bon Jovi',
    tracks: ['Let It Rock', 'You Give Love a Bad Name']
  },
  2468: {
    albumTitle: '1999',
    artist: 'Prince',
    tracks: ['1999', 'Little Red Corvette']
  },
  1245: {
    artist: 'Robert Palmer',
    tracks: []
  },
  5439: {
    albumTitle: 'ABBA Gold'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {   


  if (prop !== 'tracks' && value !== "") {
    records[id][prop] = value;
  } else if (prop === "tracks" && records[id].hasOwnProperty("tracks") === false) {
    records[id][prop] = [value];
  } else if (prop === "tracks" && value !== "") {
    records[id][prop].push(value);   / * Почему records[id][prop].push(value), а не records.id.prop.push(value) ? */

  } else if (value === "") {
    delete records[id][prop];
  }
  return records;
  }
  

updateRecords(recordCollection, 5439, 'artist', 'ABBA');


Поправьте, если неправильно понял, как работает код.
1. Программа передает аргументы в функцию, так что recordCollection это records, 5439 - id, 'artist' - prop, 'ABBA' - value;
2. Далее условия:
a) Если передаваемые условия prop не 'tracks' и value не пустое значение, (Например, передается recordCollection, 5439, 'artist', 'ABBA'и в нашем случаи 'artist' не равно 'tracks' и value у нас 'ABBA', а не пустое значение), тогда records[id][prop] = value; (artist: 'ABBA'. В общем ничего не происходит)
б) Если передаваемое значение prop это "tracks" и не существует в обьекте таких 'условий, грубо говоря' , при котором передаваемое 'tracks' не находится в обьекте с передаваемым id (Например, передается recordCollection, 5439, 'tracks', "Take a Chance on Me") ? Тогда

5439: {
albumTitle: 'ABBA Gold'
(додается) tracks: ["Take a Chance on Me"]
}

в) Если передаваемое значение prop это "tracks" и value не пустое. (Например, передаваемые аргументы (recordCollection, 1245, "tracks", "Addicted to Love") Тогда, в
1245: {
artist: 'Robert Palmer',
tracks: [ додается"Addicted to Love"]
}

г) Если передаваемое value пустое (Например, передаваемые аргументы (recordCollection, 1245, "tracks", ""), тогда
1245: {
artist: "Robert Palmer",
tracks: ""
}
Надеюсь, понятно описал (ну, я старался)
Также прошу отвечать в соответсвии с нумерацией, чтобы понятно было к чему это
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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