JS promises otro ejemplo

 const apuestas = new Promise((resolve, reject) => {
        let total = 0;
        let veces = 10000;
        for (let i = 0; i < veces; i++) {
            for (let j = 0; j < veces; j++) {
                total += Math.random() * 10;
            }
        }
        console.log(total);
        total = total / (veces ** 2);
        if (total >= 5) {
            let win = 'Hemos ganado';
            resolve(win);
        } else {
            let loose = 'Hemos perdido';
            reject(loose);
        }
    })

    apuestas.then((result)=>{
        console.log(result);
    }).catch((error)=>{
        console.log(error);
    })
    console.log("Fin programa");

JS Promises

Enlaces:
https://developers.google.com/web/fundamentals/primers/promises?hl=es
https://scotch.io/tutorials/javascript-promises-for-dummies
https://www.codingame.com/playgrounds/347/javascript-promises-mastering-the-asynchronous/your-first-code-with-promises
https://flaviocopes.com/javascript-promises/
https://exploringjs.com/es6/ch_promises.html#sec_examples-promises

 let pagaExtra = false;

    // Generación de la promesa
    let nuevoTelefono  = new Promise(
        function (resolve, reject) {
            if (pagaExtra) {
                var telefono = {
                    marca: 'Samsung',
                    color: 'black'
                };
                resolve(telefono); // fulfilled
            } else {
                var razon = new Error('Sin paga extra');
                reject(razon); // reject
            }

        }
    );

    //Consumir la promesa

    let comprar=function(){
        nuevoTelefono.then(
        //La promesa se ha cumplido
        function(fulfilled){
            console.log(fulfilled);
        }
        ).catch(
        //La promesa no se ha cumplido
        function(error){
            console.log(error);
        }
        )
    }
    comprar();

Añadimos console.log:


 let pagaExtra = true;

    // Generación de la promesa
    let nuevoTelefono  = new Promise(
        function (resolve, reject) {
            if (pagaExtra) {
                var telefono = {
                    marca: 'Samsung',
                    color: 'black'
                };
                resolve(telefono); // fulfilled
            } else {
                var razon = new Error('Sin paga extra');
                reject(razon); // reject
            }

        }
    );

    //Consumir la promesa

    let comprar=function(){
        console.log("inicio");
        nuevoTelefono.then(
        //La promesa se ha cumplido
        function(fulfilled){
            console.log(fulfilled);
        }
        ).catch(
        //La promesa no se ha cumplido
        function(error){
            console.log(error);
        }
        )
        console.log("fin");
    }
    comprar();

Resultado:

inicio
fin
{marca: “Samsung”, color: “black”}

Con parámetros:

  let comprar = function (pagaExtra) {
        let nuevoTelefono = new Promise(
            function (resolve, reject) {
                if (pagaExtra) {
                    var telefono = {
                        marca: 'Samsung',
                        color: 'black'
                    };
                    resolve(telefono); // fulfilled
                } else {
                    var razon = new Error('Sin paga extra');
                    reject(razon); // reject
                }

            }
        );
        nuevoTelefono.then(
            //La promesa se ha cumplido
            function (fulfilled) {
                console.log(fulfilled);
            }
        ).catch(
            //La promesa no se ha cumplido
            function (error) {
                console.log(error);
            }
        )
    }
    comprar(true);
    comprar(false);

JS array find y findIndex

Enlaces:

https://www.w3schools.com/jsref/jsref_find.asp
https://www.w3schools.com/jsref/jsref_findindex.asp
https://appdividend.com/2018/12/17/javascript-array-find-example-array-prototype-find-tutorial/

   let num = [1, 2, 3, 4, 5, 6, 7, 8, 9];
 
  console.log(num.find(valor => valor > 5)); //Devuelve 6
    console.log(num.findIndex(valor => valor > 5)); //Devuelve 5
    let cad = "hola que tal";
    console.log(cad.split(" ").find(valor => valor.length <= 3)); //Devuelve que
    console.log(cad.split(" ").findIndex(valor => valor.length <= 3)); //Devuelve 1
    let libros = [{ titulo: "Quijote", paginas: 400 },
    { titulo: "El buscón", paginas: 300 },
    { titulo: "Orestiada", paginas: 200 }]

    console.log(libros.find(valor=>valor.paginas<250));// Devuelve {titulo: "Orestiada", paginas: 200}
    console.log(libros.findIndex(valor=>valor.paginas<250));// Devuelve 2

    //Ejercicio: crear una función que pasándole una cadena nos devuelva la primera palabra que tenga una longitud mayor de 8
    //Ejemplo: primeraLarga("hola que tal")->undefined primeraLarga("en un lugar de la mancha arquetípica y lustrosa")->arquetípica

JS array indexOf

Enlaces:
https://www.w3schools.com/jsref/jsref_indexof_array.asp

https://www.jquery-az.com/javascript-indexof-method-explained-with-6-examples-to-search-in-arrays/

console.log(num.indexOf(5)); //Devuelve 4
    console.log(num.indexOf(5,7)); //Devuelve -1

    //Ejercicio: Crear una función que pasándole una cadena y una palabra nos devuelva un array con las posiciones de esa palabra en la cadena y vacío si no está
    //Ejemplo posPalabra("la tía de la pepa va a la casa","la")->[0,3,7] porque 'la' está en la primera posición (0) de las palabras, en la 3 y en la 7

JS array every y some

Enlaces:

https://www.w3schools.com/jsref/jsref_every.asp

https://www.w3schools.com/jsref/jsref_some.asp

https://www.geeksforgeeks.org/javascript-array-prototype-every-function/

https://mariusschulz.com/blog/the-some-and-every-array-methods-in-javascript

let todosPares=num.every((valor)=>valor%2==0);
    console.log(todosPares);
    let algunPares=num.some((valor)=>valor%2==0);
    console.log(algunPares);

    let positivos=num.every((valor)=>valor>0);
    console.log(positivos);
  
    //Ejercicio: crear una función que le pasemos una cadena y nos devuelva true si todas las palabras tienen una longitud mayor o igual a 3
    //Ejemplo: masDeTres("hola que tal")->true masDeTres("Enun lugar de la mancha")->false
    //Ejercicio: crear una función que le pasemos una cadena y nos devuelva true si hay alguna palabra con una longitud mayor de 10
    //Ejemplo: masDeDiez("hola que tal")->false  masDeDiez("Mi tía es otorrinolaringóloga")->true
    

JS array reduce

Enlaces:
https://www.w3schools.com/jsref/jsref_reduce.asp
https://medium.com/@xadrijo/un-vistazo-a-la-funci%C3%B3n-reduce-en-javascript-f4459bc4e3aa

   let suma = num.reduce((total, valor, indice, array) => {
        console.log(indice + "|" + total);
        return total + valor;
    });

    console.log(suma);

    let mayor = num.reduce((total, valor, indice, array) => {

        return total < valor ? valor : total;
    });
    console.log(mayor);

let alumnos=[
    {nombre:"ana",nota:8},
    {nombre:"eva",nota:3},
    {nombre:"pep",nota:8},
    {nombre:"ot",nota:5},
]

let suma=alumnos.reduce((total,valor)=>total+valor.nota,0);
let peor=alumnos.reduce((total,valor)=>total.nota>valor.nota?valor:total);

console.log(suma);
console.log(peor);
    //Ejercicio: crear una función que le pasemos una cadena y nos devuelva la palabra más corta y si hay varias más cortas la primera alfabeticamente
    //Ejemplo cadCorta("en un lugar de la mancha")->"de"
    

JS array filter

Enlaces:

https://www.w3schools.com/jsref/jsref_filter.asp

https://ed.team/blog/javascript-filtrar-elementos-de-un-array-con-filter

https://alligator.io/js/filter-array-method/

Código de ejemplo:

 let conA=a.filter((valor,indice,array)=>{
        return valor.indexOf("a")!=-1;
    })
    console.log(conA);

    let num=[1,2,3,4,5,6,7,8,9];
    let impares=num.filter((valor)=>valor%2);
    console.log(impares);
    
    //Ejercicio: crear una función que le pasemos una cadena y un tamaño y nos devuelva una cadena eliminando las palabras de longitud menor o igual al tamaño
    //Ejemplo: limitar("En un lugar de la mancha",2)->"lugar mancha"

JS array map

Enlaces:

https://www.w3schools.com/jsref/jsref_map.asp

https://code.tutsplus.com/es/tutorials/how-to-use-map-filter-reduce-in-javascript–cms-26209

Javascript – la función map

Código de ejemplo:

let a = ["Ana", "Eva", "Pep"];
  let may=a.map((valor,indice,array)=>{
        return valor.toUpperCase();
    })
    console.log(may);

    let minmay=a.map((valor,indice,array)=>{
        return indice%2==0?valor.toUpperCase():valor.toLowerCase();
    })
    console.log(minmay);

    //Ejercicio: crear una función a la que le pasemos una cadena y nos devuelva una cadena con las palabras en el mismo orden pero invertidas
    //Ejemplo: invertirPalabras("Hola que tal")->"aloH euq lat"

JS array forEach

Nos permite recorrer los elementos de un array. Enlaces:

https://www.w3schools.com/jsref/jsref_foreach.asp

https://dmitripavlutin.com/foreach-iterate-array-javascript/

https://medium.com/front-end-weekly/3-things-you-didnt-know-about-the-foreach-loop-in-js-ff02cec465b1

Ejemplos de código:

 let a = ["Ana", "Eva", "Pep"];

    //foreach nos permtite recorrer todos los elementos de un array
    a.forEach((valor, indice, array) => {
        console.log(valor);
        console.log(indice);
        console.log(array);
    })

    let b = [];
    a.forEach((valor, indice, array) => {
        b.unshift(valor);
    })
    console.log(b);

    function menu(array) {
        let lista = "<ul>";
        array.forEach((valor) => {
            lista += "<li>" + valor + "</li>";
        })
        lista += "</ul>";
        return lista;
    }
    console.log(menu(a));

    //Ejercicio: crear una función a la que le pasemos una cadena y nos devuelva un objeto con el número de vocales existentes.
    //Ejemplo: vocales("Hola que tal")->{a:2,e:1,o:1,u:1}