class Sala {
    constructor(codigo,nombre) {
        this.codigo=codigo;
        this.nombre=nombre;
    }
    toString(){
        return this.nombre;
    }
}
class Pelicula {
    constructor(codigo,nombre,sala) {
        this.codigo=codigo;
        this.nombre=nombre;
        this.sala=sala;
    }
    toString(){
        return this.codigo
                + " - "
                + this.nombre
                + " - "
                + this.sala;
    }
}

let listaSala = [];

function agregarSala(sala) {

    let existe = listaSala.some(
            s => s.nombre === sala.nombre
    );

    if (!existe) {

        listaSala.push(sala);
    }
}

let s1 = new Sala(1, "Sala1");
let s2 = new Sala(2, "Sala2");
let s3 = new Sala(3, "Sala3");
let s4 = new Sala(4, "Sala1");

agregarSala(s1);
agregarSala(s2);
agregarSala(s3);
agregarSala(s4);

console.log("----SALAS----");

listaSala.forEach(s => {
    console.log("*" + s.toString());
});

// =====================================
// PELICULAS
// =====================================

let listaPelicula = [];

let p1 = new Pelicula(10,"Michael Jackson", s1);
let p2 = new Pelicula(20, "Avatar",s2);
let p3 = new Pelicula(30,"Avengers",s3);

// agregar
listaPelicula.push(p1);
listaPelicula.push(p2);
listaPelicula.push(p3);

console.log("\n----LISTA PELICULAS----");

listaPelicula.forEach(p => {
    console.log("*" + p.toString());
});

// =====================================
// MODIFICAR
// =====================================

p3 = new Pelicula(30,"Titanic",s3);
listaPelicula[2] = p3;
console.log("\n----LISTA PELICULAS MODIFICADA----");

listaPelicula.forEach(p => {console.log("*" + p.toString());});

// =====================================
// ELIMINAR
// =====================================

listaPelicula.splice(2, 1);

console.log(
        "\n----LISTA PELICULAS ELIMINADA----"
);

listaPelicula.forEach(p => {console.log("*" + p.toString());});

// =====================================
// COLA FUNCIONES
// =====================================

// Queue en JS -> Array

let colaFunciones = [];
colaFunciones.push(p1);
colaFunciones.push(p2);

// =====================================
// HISTORIAL
// =====================================

// Stack en JS -> Array

let historial = [];

// poll() en JS -> shift()

let atencion1 = colaFunciones.shift();

historial.push(atencion1);

let atencion2 = colaFunciones.shift();

historial.push(atencion2);

// =====================================
// VER HISTORIAL
// =====================================

console.log("\n----HISTORIAL----");

let historialTemp = [];

while (historial.length > 0) {

    let ultimo = historial.pop();

    console.log(ultimo.toString());

    historialTemp.push(ultimo);
}

// restaurar

while (historialTemp.length > 0) {
    historial.push(historialTemp.pop());
}

// =====================================
// JSON
// =====================================

console.log("\n----JSON----");

let listaJson = [];

// recorrer historial

for (let i = historial.length - 1;i >= 0;i--) {

    let p = historial[i];

    let mapPeli = {codigo: p.codigo,
                   nombre: p.nombre,
                   sala: p.sala.nombre};

    listaJson.push(mapPeli);
}

// imprimir bonito

console.log(JSON.stringify(listaJson,null,2));

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: