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",
]
}
];