Ejemplos funciones iteracción

let nums = [1, 2, 3, 4, 5, 6, 7, 8, 1, 3, 2, 5, 14, 23];

// Orden numérico con función flecha
let grandes = nums.filter(check);
grandes = nums.filter((item) => item % 2 == 0);
console.log(grandes)

let doble = nums.map(item => item * 2);

console.log(doble)

function check(elemento) {
    return elemento % 2 == 0;
}

let users = [
    { id: 1, name: "Celina" },
    { id: 2, name: "David" },
    { id: 3, name: "Federico" }
];

let user = users.findIndex(item => item.id == 1);
console.log(user);

let conA = users.filter(item => item.name.includes("a"));
console.log(conA);

Ordenación arrays

let nums = [1, 2, 3, 4, 5, 6, 7, 8, 1, 3, 2, 5, 14, 23];

// Orden numérico con función flecha
nums.sort((a, b) => a - b);
nums.sort(function(a, b){return a - b;});
console.log(nums);
nums.reverse();
console.log(nums);


let alumnos=["Pep","Ána","Iu"];
// Orden de cadenas con acentos
alumnos.sort((a,b)=>a.localeCompare(b));
console.log(alumnos);

// Desordenar
nums.sort(()=>0.5-Math.random());
console.log(nums);

// Ordenar creando copia
let nuevo=nums.toSorted((a, b) => a - b);
console.log(nuevo);
// Invertir creando copia
let inverso=nuevo.toReversed();
console.log(inverso);

Ejemplos array

let fruits = ["Apple", "Orange", "Plum",1,{nombre:"Ana"},[1,2,3]];

console.log(fruits[1]);

fruits[1]="Manzana";

console.log(fruits.at(-1))

frutas=fruits;
frutas[0]="Pera";
console.log(fruits);

let lista=[1,2,3,4,5];
console.log(suma(lista));
console.log(lista);

function suma(lista){
    for(let i=1;i<lista.length;i++){
        lista[0]+=lista[i];
    }
    return lista[0];
}

fruits[900]="Cacahuete";

console.log(fruits);

fruits.super="Mercadona";

console.log(fruits);

for (let valor of fruits){
    console.log(valor);
}

fruits.push("Mandarina"); // Añado un elemento
console.log(fruits);
let res=fruits.pop(); // Quito un elemento
console.log(fruits);
console.log(res)

fruits.unshift("Aguacate");
console.log(fruits);
res=fruits.shift();
console.log(res);

Ejemplos números

let billion = 1e-6;

console.log(0xFF);
console.log(0b10001);

let num=7;
console.log(num.toString(16));
console.log(num.toString(2));
console.log(num.toString(7));

let suma=0.1+0.2;
console.log(Math.round(suma*100)/100);
console.log(suma.toFixed(2));

let j=Number("aa");
console.log(j);
console.log(Number.isNaN(j));
console.log(j==NaN);

console.log(parseInt('100px'))
console.log(Number('100px'))

for(let i=0;i<10;i++){
    console.log(aleatorio(6,2));
}

function aleatorio(max,min=1){
    return Math.trunc(Math.random()*(max-min+1))+min;
}

Math.max(3,5,1,78,4);

Ejercicios objetos

Cread una función a la que le pasemos un número y nos cree un objeto que tenga una propiedad ‘valor’ y el valor el número que le hemos pasado

Cread una función creaUsuario a la que le pasamos un nombre, un email y una ciudad y nos crea un objeto con esas tres propiedades

Cread una función mayor a la que le pasamos dos objetos como los del primer ejercicio y nos devuelve el objeto que tiene mayor valor. ¿Estamos devolviendo una referencia o una copia? Probadlo y decidid que es lo que mejor tenemos que devolver.

Cread una función hayComunes a la que le pasamos dos objetos y nos devuelve true si tienen propiedades compartidas y false si no es así.

Cread una función a la que le pasamos dos objetos y nos crea un objeto nuevo con las propiedades NO COMPARTIDAS de los objetos. Es decir, si el primer objeto tiene de propiedades nombre y edad y el segundo nombre y apellidos nos crea un objeto con las propiedades edad y apellidos. Los valores, los que tengan.

Cread una función masGrande a la que le pasamos dos objetos y nos devuelve el objeto que tenga más propiedades.

Más ejemplos objetos: copias

function makeUser(name, age) {
    return {
        name,
        age,
        for:5,
        7:"hola",
        "1":"boo",
    };
}

let user = makeUser("John", 30);

console.log(user);

let user2 = makeUser("Ana", 50);

// Si una propiedad existe
console.log("name" in user2);
console.log("names" in user2);

// Recorro todas las propiedades
for (clave in user){
    console.log(clave,user[clave])
}

// Los objetos son referencias
let user3=user2;

user3.name="Eustaquio";
console.log(user2);

// Para copiar un objeto tenemos varias opciones
let user4={};
// Usamos assign para copiar valores
Object.assign(user4,user);
user4.name="Ares";
console.log(user);
console.log(user4);

let a={
    a:1
};
let b={
    b:2
};
let c={
    c:3,
    a:6
};
let d={};
Object.assign(d,a,b,c);
console.log(d) //{a: 1, b: 2, c: 3}

let user5 = {
    name: "John",
    sizes: {
      height: 182,
      width: 50
    }
  };
  
  // Esto lo usamos para copiar de manera recursiva
  let clone = structuredClone(user5);

Ejemplos objetos

let user = {     // un objeto
    name: "John",  // En la clave "name" se almacena el valor "John"
    age: 30,        // En la clave "age" se almacena el valor 30
    age2: 30,        // En la clave "age" se almacena el valor 30
};

console.log(user)
console.log(user.name)

user.apellidos = "Pi";
console.log(user);

delete user.age;
let prop="apellidos";
console.log(user[prop]);

let foo="www";

user[foo]=7;

console.log(user);

let test={
    [foo]:1,
    [prop]:"Pi",
}

console.log(test)

Ejemplo funciones flecha

// Formato standard de la función flecha
let sum = (a, b) => a + b;

// Funciones flecha multilineas

let fibonacci=(num)=>{
    let a=1,b=1,c=a+b;
    for (let i=2;i<num;i++){
        c=a+b;
        a=b;
        b=c;
    }
    return c;
}

console.log(sum(2,3))

function checkEdad(edad,si,no){
    let res="";
    if(edad>=18){
        res=si();
    }else{
        res=no();
    }
    console.log(res);
}

checkEdad(10,function(){return "Puedes entrar al casino";},function(){return "No puedes entrar al casino";});
checkEdad(20,()=>"Puedes entrar al casino",()=>"No puedes entrar al casino");