Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md
2023-01-11 13:20:09 +05:30

4.5 KiB
Raw Blame History

id, title, challengeType, videoUrl, forumTopicId, dashedName
id title challengeType videoUrl forumTopicId dashedName
56533eb9ac21ba0edf2244cb Маніпулювання складними об'єктами 1 https://scrimba.com/c/c9yNMfR 18208 manipulating-complex-objects

--description--

Іноді ви можете зберігати дані в гнучкій структурі даних. Об'єкт JavaScript є одним із способів обробки гнучких даних. Вони дозволяють створювати комбінації рядків, чисел, булевих значень, масивів, функцій та об’єктів.

Ось приклад складної структури даних:

const ourMusic = [
  {
    "artist": "Daft Punk",
    "title": "Homework",
    "release_year": 1997,
    "formats": [ 
      "CD", 
      "Cassette", 
      "LP"
    ],
    "gold": true
  }
];

Це масив, який містить один об'єкт всередині. Об'єкт має різні метадані альбому. Він також має вкладений масив formats. Якщо ви хочете додати більше записів, додайте їх до масиву верхнього рівня. Об'єкти зберігають дані у властивості, яка має формат «ключ-значення». У прикладі вище властивістю виступає "artist": "Daft Punk", що має ключ artist і значення Daft Punk.

Примітка: вам потрібно розмістити кому після кожного об'єкта в масиві, якщо він не є останнім об'єктом.

--instructions--

Додайте новий альбом до масиву myMusic. Додайте рядки artist та title, число release_year та масив рядків formats.

--hints--

myMusic повинен бути масивом

assert(Array.isArray(myMusic));

myMusic повинен мати принаймні два елементи

assert(myMusic.length > 1);

Елементи у масиві myMusic повинні бути об'єктами

myMusic.forEach(object => {assert.typeOf(object, 'object')})

Ваш об'єкт у myMusic повинен мати принаймні 4 властивості

myMusic.forEach(object => {assert(Object.keys(object).length > 3); });

Ваш об'єкт у myMusic повинен містити властивість artist, яка є рядком

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['artist']);
  assert.typeOf(object.artist, 'string')
})

Ваш об'єкт у myMusic повинен містити властивість title, яка є рядком

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['title']);
  assert.typeOf(object.title, 'string')
})

Ваш об'єкт у myMusic повинен містити властивість release_year, яка є числом

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['release_year']);
  assert.typeOf(object.release_year, 'number')
})

Ваш об'єкт у myMusic повинен містити властивість formats, яка є масивом

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['formats']);
  assert.typeOf(object.formats, 'array')
})

formats повинен бути масивом рядків з принаймні двома елементами

myMusic.forEach(object => {
  object.formats.forEach(format => {
    assert.typeOf(format, 'string')
  });
  assert.isAtLeast(object.formats.length, 2)
})

--seed--

--after-user-code--

(function(x){ if (Array.isArray(x)) { return JSON.stringify(x); } return "myMusic is not an array"})(myMusic);

--seed-contents--

const myMusic = [
  {
    "artist": "Billy Joel",
    "title": "Piano Man",
    "release_year": 1973,
    "formats": [
      "CD",
      "8T",
      "LP"
    ],
    "gold": true
  }
];

--solutions--

const myMusic = [
  {
    "artist": "Billy Joel",
    "title": "Piano Man",
    "release_year": 1973,
    "formats": [
      "CS",
      "8T",
      "LP" ],
    "gold": true
  },
  {
    "artist": "ABBA",
    "title": "Ring Ring",
    "release_year": 1973,
    "formats": [
      "CS",
      "8T",
      "LP",
    "CD",
  ]
  }
];