--- id: 56533eb9ac21ba0edf2244cb title: Manipulating Complex Objects localeTitle: Manipulando objetos complejos challengeType: 1 --- ## Description
A veces es posible que desee almacenar datos en una estructura de datos flexible. Un objeto JavaScript es una forma de manejar datos flexibles. Permiten combinaciones arbitrarias de cadenas , números , booleanos , matrices , funciones y objetos . Aquí hay un ejemplo de una estructura de datos compleja:
var ourMusic = [
  {
    "artist": "Daft Punk",
    "title": "Homework",
    "release_year": 1997,
    "formats": [
      "CD",
      "Cassette",
      "LP"
    ],
    "gold": true
  }
];
Esta es una matriz que contiene un objeto dentro. El objeto tiene varias piezas de metadatos sobre un álbum. También tiene una matriz de "formats" anidados. Si desea agregar más registros de álbum, puede hacerlo agregando registros a la matriz de nivel superior. objetos contienen datos en una propiedad, que tiene un formato de clave-valor. En el ejemplo anterior, "artist": "Daft Punk" es una propiedad que tiene una clave de "artist" y un valor de "Daft Punk" . JavaScript Object Notation o JSON es un formato de intercambio de datos relacionado que se utiliza para almacenar datos.
{
  "artist": "Daft Punk",
  "title": "Homework",
  "release_year": 1997,
  "formats": [
    "CD",
    "Cassette",
    "LP"
  ],
  "gold": true
}
Nota
Deberá colocar una coma después de cada objeto de la matriz, a menos que sea el último objeto de la matriz.
## Instructions
Agrega un nuevo álbum a la matriz myMusic . Agregue cadenas de artist y title , número de año de release_year y una matriz de formats de cadenas.
## Tests
```yml tests: - text: myMusic debería ser una matriz testString: 'assert(Array.isArray(myMusic), "myMusic should be an array");' - text: myMusic debería tener al menos dos elementos testString: 'assert(myMusic.length > 1, "myMusic should have at least two elements");' - text: ' myMusic[1] debería ser un objeto' testString: 'assert(typeof myMusic[1] === "object", "myMusic[1] should be an object");' - text: ' myMusic[1] debería tener al menos 4 propiedades' testString: 'assert(Object.keys(myMusic[1]).length > 3, "myMusic[1] should have at least 4 properties");' - text: ' myMusic[1] debe contener una propiedad de artist que es una cadena' 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] debe contener una propiedad de title que es una cadena' 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] debe contener una propiedad release_year que es un 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] debe contener una propiedad de formats que es una 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 deben ser una matriz de cadenas con al menos dos 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 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", ] } ]; ```