Objetos

Curso de Javascript Online. Desde cero.

14.  
19.  
25.  
34.  

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Un objeto, al igual que un array, nos permite almacenar información de manera estructurada, pero mientras que en un array accedíamos a cada uno de los elementos almacenados mediante un índice numérico, en un objeto utilizaremos una cadena de texto (las propiedades del objeto).

Definir un objeto

Las propiedades del objeto irán encerradas entre llaves ({}), mientras que en un array iban encerradas entre corchetes ([]). En el ejemplo, nuestro objeto tiene 3 propiedades: nombre, edad y altura. Para asignar valores a estas propiedades usamos los dos puntos (:) en lugar del signo de igual.

const persona = {
   nombre: "Juan",
   edad: 38,
   altura: 185
}

Acceder a las propiedades de un objeto

De manera estática (lo habitual)

console.log(persona.nombre)

De manera dinámica

const nombrePropiedad = 'nombre';
console.log(persona[nombrePropiedad])

Para modificar una propiedad de un objeto:

persona.nombre = "Nuevo Nombre";

Getters y Setters

Los getters y setters nos permiten establecer condiciones de acceso y modificación respectivamente a las propiedades de un objeto.

  • Estableciendo un getter, podremos establecer una transformación en los valores recuperados de un objeto.
  • Estableciendo un un setter, podremos establecer una transoformación del valor asignado a una propiedad.
<script> 
   const persona = {
        nombre: "Juan",
        edad: 38,
        altura: 185,
        get nombreGenerico() {
            return this.nombre + ' Fernández';
        },
        set edadIncrementada(value) {
            this.edad = value + 10
        }
    }

    persona.edadIncrementada = 20;

    console.log(persona);
    /*
        altura: 185
        edad: 30
        nombre: "Juan"
        nombreGenerico: "Juan Fernández"
    */
</script>

Convertir un objeto en un array

const persona = {
    nombre: "Juan",
    edad: 38,
    altura: 185,
}

const values = Object.values(persona); 
const keys = Object.keys(persona); 
const arrayDeArrays = Object.entries(persona); 

console.log(values); // ["Juan", 38, 185];
console.log(keys); // ["nombre", "edad", "altura"]
console.log(arrayDeArrays); // [["nombre", "Juan"], ["edad", 38], ["altura", 185]] 

Ejercicios objetos

1. Escribe un objeto llamado miPerro que tenga las siguientes propiedades: piernas, colas, amigos. Dale valor a estas propiedades y haz tres console.log(), uno por cada una de las tres propiedades.

2. La constante ojos debe valer la propiedad ojos del objeto testObj. Además, la constante nombre debe valer la propiedad nombre del objeto testObj.

const testObj = {
    "ojos": 2,
    "nombre": "Pablo",
    "piernas": 2
};

// Sólo hay que hacer modificaciones por debajo de esta línea 
const ojos = testObj;      // Cambiar esta línea
const nombre = testObj;    // Cambia esta línea

console.log(ojos); // Debería mostrar: 2
console.log(nombre); // Debería mostrar: "Pablo"

3. Utilizar la constante playerNumber para acceder a la propiedad correspondiente del objeto testObj.

const testObj = {
    12: "Namath",
    16: "Montana",
    19: "Unitas"
};

const playerNumber = 19;
const player = testObj;   // Cambia esta línea

console.log(player); // Debería mostrar: "Unitas"

4. Accede a la propiedad nombre para cambiar su valor de Coder a HappyCoder.

const myDog = {
    "nombre": "Coder",
    "piernas": 4,
    "colas": 1,
};

// Modifica esta línea con el código necesario
console.log(myDog.nombre); // Debería mostrar: "HappyCoder"

5. Convierte el bloque switch-case en un objeto llamado lookup.

function phoneticLookup(val) {
    let result = "";

    // Sólo cambia el código por debajo de esta línea
    switch (val) {
        case "alpha":
            result = "Adams";
            break;
        case "bravo":
            result = "Boston";
            break;
        case "charlie":
            result = "Chicago";
            break;
        case "delta":
            result = "Denver";
            break;
        case "echo":
            result = "Easy";
            break;
        case "foxtrot":
            result = "Frank";
    }

    // Sólo cambia el código por encima de esta línea
    return result;
}

const value = phoneticLookup("charlie")
console.log(value); // Chicago

6. Añade un nuevo album al array myMusic. Deberá tener las mismas propiedades, pero con valores diferentes que el primer objeto del array.
Después, añadir un console.log para mostrar el valor del nombre del artista y otro console.log para mostrar el valor del primer elemento del array de formatos del album recien añadido.

const myMusic = [
    {
        "artista": "Shakira",
        "titulo": "Piano Man",
        "formatos": [
            "CD",
            "8T",
            "LP"
        ],
        "premios": true
    }
];

7. Asigna a la constante gloveBoxContents el valor de la propiedad glovebox.

const myStorage = {
    "car": {
        "inside": {
            "glove box": "maps",
            "passenger seat": "crumbs"
        },
        "outside": {
            "trunk": "jack"
        }
    }
};

const gloveBoxContents = undefined; // Cambia esta línea
console.log(gloveBoxContents); // Debería valer: "maps"

8. Asigna a la constante secondTree el valor de la propiedad list del segundo objeto del array myPlants.

const myPlants = [
    {
        type: "flowers",
        list: [
            "rose",
            "tulip",
            "dandelion"
        ]
    },
    {
        type: "trees",
        list: [
            "fir",
            "pine",
            "birch"
        ]
    }
];

const secondTree = undefined;
console.log(secondTree); // Debería mostrar: ["fir", "pine", "birch"]
Ver preguntas de la certificación JSE-40-01

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.