4.0 KiB
id, title, challengeType, videoUrl, forumTopicId, dashedName
| id | title | challengeType | videoUrl | forumTopicId | dashedName |
|---|---|---|---|---|---|
| 56533eb9ac21ba0edf2244cb | Manipulando Objetos Complexos | 1 | https://scrimba.com/c/c9yNMfR | 18208 | manipulating-complex-objects |
--description--
Às vezes você pode querer armazenar dados em uma Estrutura de Dados flexível. Um objeto JavaScript é uma forma de lidar com dados flexíveis. Eles permitem combinações arbitrárias de strings, numbers, booleans, arrays, functions e objects.
Aqui está um exemplo de estrutura de dados complexas:
var ourMusic = [
{
"artist": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formats": [
"CD",
"Cassette",
"LP"
],
"gold": true
}
];
Isto é um array o qual contém um objeto dentro dele. O objeto possui vários pedaços de metadados sobre um album. Também possui um array aninhado formats. Se você quiser adicionar mais discos de album, você pode fazer isso ao adicionar os discos no array de alto nível. Objetos armazenam dados em uma propriedade, a qual possui um formato de chave-valor. No exemplo acima, "artist": "Daft Punk" é uma propriedade que tem uma chave artist e um valor de Daft Punk. Notação de Objeto JavaScript ou JSON é um formato, de interalteração de dados relacionados, usado para armazenar dados.
{
"artist": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formats": [
"CD",
"Cassette",
"LP"
],
"gold": true
}
Nota: Você precisará colocar uma vírgula após cada objeto no array, a não ser que for o último objeto no array.
--instructions--
Adicione um novo álbum para o array myMusic. Adicione strings: artist e title, número: release_year, e um array de strings: formats.
--hints--
myMusic deve ser um array
assert(Array.isArray(myMusic));
myMusic deve ter pelo menos dois elementos
assert(myMusic.length > 1);
Os elementos no array myMusic devem ser objetos
myMusic.forEach(object => {assert.typeOf(object, 'object')})
Seu objeto em myMusic deve ter pelo menos 4 propriedades
myMusic.forEach(object => {assert(Object.keys(object).length > 3); });
Seu objeto em myMusic deve conter a propriedade artist a qual é uma string
myMusic.forEach(object => {
assert.containsAllKeys(object, ['artist']);
assert.typeOf(object.artist, 'string')
})
Seu objeto em myMusic deve conter a propriedade title a qual é uma string
myMusic.forEach(object => {
assert.containsAllKeys(object, ['title']);
assert.typeOf(object.title, 'string')
})
Seu objeto em myMusic deve conter a propriedade release_year a qual é um número
myMusic.forEach(object => {
assert.containsAllKeys(object, ['release_year']);
assert.typeOf(object.release_year, 'number')
})
Seu objeto em myMusic deve conter a propriedade formats a qual é um array
myMusic.forEach(object => {
assert.containsAllKeys(object, ['formats']);
assert.typeOf(object.formats, 'array')
})
formats deve ser um array de strings com pelo menos dois elementos
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--
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
}
];
--solutions--
var 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",
]
}
];