let now = new Date();
let desde1970 = new Date(1000 * 60 * 60 * 24 * 365 * 10);
let deCadena = new Date("2024-12-01 10:24:30");
let desglosado = new Date(2023, 0, 44, 17, 15, 20);
console.log(now);
console.log(desde1970);
console.log(deCadena);
console.log(desglosado);
console.log(desglosado.toDateString());
console.log(desglosado.toLocaleString());
console.log(desglosado.toLocaleDateString());
// Todas las fechas de 2024
for(let i=1;i<=365;i++){
console.log(new Date(2024,0,i));
}
console.log(now.getFullYear(),now.getMonth(), now.getDate(), now.getHours(),now.getMinutes(),now.getSeconds(), now.getMilliseconds());
console.log(now.getDay(),now.getTime());
let inicio=new Date().getTime();
console.log(inicio)
for(let i=0;i<100000000;i++){
let a=2**i;
}
let fin=new Date().getTime();
console.log(fin)
console.log(fin-inicio)
Categoría: JavaScript
Ejemplo spread y destructuring
// tenemos un array con un nombre y apellido
let arr = ["John", "Smith"]
// asignación desestructurante
// fija firstName = arr[0]
// y surname = arr[1]
let [firstName, surname] = arr;
/*
let firstName=arr[0];
let surname=arr[1];
*/
console.log(firstName)
console.log(surname)
console.log(arr)
// segundo elemento no es necesario
let [nombre, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
console.log(nombre)
console.log(title)
let aa = 2;
let b = 7;
/*
let c=a;
a=b;
b=c;
*/
// swap de variables usando destructuring
[aa, b] = [b, aa]
console.log(aa);
let user = {
name: "John",
age: 30
};
// recorrer claves-y-valores con destructuring
for (let [key, value] of Object.entries(user)) {
console.log(`${key}:${value}`); // name:John, luego age:30
}
let [name1, name2, ...rest] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
console.log(rest);
// valores predeterminados
let [name = "Guest", apellido = "Anonymous"] = ["Julius"];
let options = {
titulo: "Menu",
width: 100,
height: 200
};
let { width, titulo, height } = options;
console.log(titulo)
let prueba = { a: 1, b: 2, c: 3, d: 4 };
let { a, ...resto } = prueba;
console.log(resto)
showMenu(options);
showMenu();
function showMenu({ titulo = "Untitled", width = 200, height = 100, items = [] } = {}) {
console.log(titulo)
}
https://es.javascript.info/destructuring-assignment
https://dev.to/codingnninja/a-simple-guide-to-javascript-destructuring-3o8o
https://davidwalsh.name/spread-operator
https://codeburst.io/a-simple-guide-to-destructuring-and-es6-spread-operator-e02212af5831
Ejercicios
1.- Crear una función InternalTrim que elimine espacios de más DENTRO de una cadena.
InternalTrim(“Hola que tal”)=>”Hola que tal”
2.- Crear una función ToTitleCase que nos ponga la primera letra de cada palabra en mayúsculas
ToTitleCase(“hoLA que TAL”)=>”Hola Que Tal”
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)