4.0 KiB
id, title, challengeType, videoUrl, forumTopicId, dashedName
| 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:
const 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--
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",
]
}
];