--- id: 56533eb9ac21ba0edf2244cb title: Manipulating Complex Objects challengeType: 1 videoUrl: '' localeTitle: Manipulando Objetos Complexos --- ## Description
Às vezes você pode querer armazenar dados em uma estrutura de dados flexível. Um objeto JavaScript é uma maneira de lidar com dados flexíveis. Eles permitem combinações arbitrárias de strings , números , booleanos , matrizes , funções e objetos . Aqui está um exemplo de uma estrutura de dados complexa:
var ourMusic = [
{
"artista": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formatos": [
"CD",
"Cassete",
"LP"
]
"gold": true
}
];
Esta é uma matriz que contém um objeto dentro. O objeto possui vários metadados sobre um álbum. Ele também possui uma matriz de "formats" aninhados. Se você quiser adicionar mais registros de álbuns, poderá fazer isso adicionando registros à matriz de nível superior. Objetos retêm dados em uma propriedade, que possui um formato de valor-chave. No exemplo acima, "artist": "Daft Punk" é uma propriedade que tem uma chave de "artist" e um valor de "Daft Punk" . JavaScript Object Notation ou JSON é um formato de intercâmbio de dados relacionado usado para armazenar dados.
{
"artista": "Daft Punk",
"title": "Homework",
"release_year": 1997,
"formatos": [
"CD",
"Cassete",
"LP"
]
"gold": true
}
Nota
Você precisará colocar uma vírgula após cada objeto na matriz, a menos que seja o último objeto na matriz.
## Instructions
Adicione um novo álbum ao array myMusic . Adicione strings de artist e title , release_year number e uma matriz de formats de strings.
## Tests
```yml tests: - text: myMusic deve ser um array testString: 'assert(Array.isArray(myMusic), "myMusic should be an array");' - text: myMusic deve ter pelo menos dois elementos testString: 'assert(myMusic.length > 1, "myMusic should have at least two elements");' - text: 'myMusic[1] deve ser um objeto' testString: 'assert(typeof myMusic[1] === "object", "myMusic[1] should be an object");' - text: 'myMusic[1] deve ter pelo menos 4 propriedades' testString: 'assert(Object.keys(myMusic[1]).length > 3, "myMusic[1] should have at least 4 properties");' - text: 'myMusic[1] deve conter uma propriedade de artist que seja uma string' testString: 'assert(myMusic[1].hasOwnProperty("artist") && typeof myMusic[1].artist === "string", "myMusic[1] should contain an artist property which is a string");' - text: 'myMusic[1] deve conter uma propriedade de title que é uma string' testString: 'assert(myMusic[1].hasOwnProperty("title") && typeof myMusic[1].title === "string", "myMusic[1] should contain a title property which is a string");' - text: 'myMusic[1] deve conter uma propriedade release_year que é um número' testString: 'assert(myMusic[1].hasOwnProperty("release_year") && typeof myMusic[1].release_year === "number", "myMusic[1] should contain a release_year property which is a number");' - text: 'myMusic[1] deve conter uma propriedade de formats que é uma matriz' testString: 'assert(myMusic[1].hasOwnProperty("formats") && Array.isArray(myMusic[1].formats), "myMusic[1] should contain a formats property which is an array");' - text: formats devem ser um array de strings com pelo menos dois elementos testString: 'assert(myMusic[1].formats.every(function(item) { return (typeof item === "string")}) && myMusic[1].formats.length > 1, "formats should be an array of strings with at least two elements");' ```
## Challenge Seed
```js var myMusic = [ { "artist": "Billy Joel", "title": "Piano Man", "release_year": 1973, "formats": [ "CD", "8T", "LP" ], "gold": true } // Add record here ]; ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```