5.0 KiB
id, title, challengeType, videoUrl, forumTopicId, dashedName
id | title | challengeType | videoUrl | forumTopicId | dashedName |
---|---|---|---|---|---|
56533eb9ac21ba0edf2244cb | Керування складними об'єктами | 1 | https://scrimba.com/c/c9yNMfR | 18208 | manipulating-complex-objects |
--description--
Іноді ви можете зберігати дані в гнучкій Data Structure. Об'єкт JavaScript є одним із способів обробки гнучких даних. Вони створюють можливість довільних комбінацій strings, numbers, booleans, arrays, functions та objects.
Ось приклад структури складних даних:
const ourMusic = [
{
"artist": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formats": [
"CD",
"Cassette",
"LP"
],
"gold": true
}
];
Це масив, який містить один об'єкт всередині. Об'єкт має різні частини metadata про альбом. Він також має вкладений масив formats
. Якщо ви хочете додати більше записів в альбом, це можна зробити, додавши записи до масиву верхнього рівня. Об'єкти зберігають дані у властивості, яка має формат ключ-значення. У прикладі вище, "artist": "Daft Punk"
- це властивість, що має ключ artist
і значення Daft Punk
. JavaScript Object Notation або JSON
є форматом відповідного обміну даними, який використовується для зберігання даних.
{
"artist": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formats": [
"CD",
"Cassette",
"LP"
],
"gold": true
}
Примітка: Вам потрібно буде розмістити кому після кожного об'єкта в масиві, якщо він не є останнім його об'єктом.
--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
, яка належить до типу string
myMusic.forEach(object => {
assert.containsAllKeys(object, ['artist']);
assert.typeOf(object.artist, 'string')
})
Ваш об'єкт в myMusic
повинен містити властивість title
, яка належить до типу string
myMusic.forEach(object => {
assert.containsAllKeys(object, ['title']);
assert.typeOf(object.title, 'string')
})
Ваш об'єкт в myMusic
повинен містити властивість release_year
, яка належить до типу number
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",
]
}
];