freeCodeCamp/curriculum/challenges/espanol/02-javascript-algorithms-an.../basic-javascript/manipulating-complex-object...

4.0 KiB

id title challengeType videoUrl forumTopicId dashedName
56533eb9ac21ba0edf2244cb Manipulando objectos complejos 1 https://scrimba.com/c/c9yNMfR 18208 manipulating-complex-objects

--description--

A veces, es posible que desees almacenar datos en una estructura de datos flexible. Un objeto de JavaScript es una forma de manejar datos flexibles. Permiten combinaciones arbitrarias de cadenas, números, booleanos, arreglos, funciones, y objetos.

Este es un ejemplo de una estructura de datos compleja:

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

Esto es una arreglo que contiene un objeto en su interior. El objeto tiene varias piezas de metadatos sobre un álbum. También tiene un arreglo anidado de formats. Si desea añadir más registros de álbumes, puede hacerlo añadiendo registros a la parte superior del arreglo. Los objetos almacenan datos en una propiedad, con formato clave-valor. En el ejemplo anterior, "artist": "Daft Punk" es una propiedad que tiene como clave artist y su valor es Daft Punk. JavaScript Object Notation o JSON es un formato de intercambio de datos relacionado utilizado para almacenar información.

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

Nota: Deberás colocar una coma después de cada objeto en el arreglo, a menos que sea el último objeto.

--instructions--

Añade un nuevo álbum al arreglo myMusic. Añade las cadenas artist y title, el número release_year, y un arreglo de cadenas formats.

--hints--

myMusic debe ser un arreglo

assert(Array.isArray(myMusic));

myMusic debe tener al menos dos elementos

assert(myMusic.length > 1);

Los elementos en el arreglo myMusic deben ser objetos

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

Tu objeto en myMusic debe tener al menos 4 propiedades

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

Tu objeto en myMusic debe contener la propiedad artist que es una cadena

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

Tu objeto en myMusic debe contener la propiedad title que es una cadena

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

Tu objeto en myMusic debe contener la propiedad release_year que es un número

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

Tu objeto en myMusic debe contener una propiedad de formats que es un arreglo

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

formats debe ser un arreglo de cadenas con al menos dos 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",
  ]
  }
];