Tema 4: Programación Con Funciones, Arrays Y Funciones Definidas Por El Usuario
Tema 4: Programación Con Funciones, Arrays Y Funciones Definidas Por El Usuario
Tema 4: Programación Con Funciones, Arrays Y Funciones Definidas Por El Usuario
PROGRAMACIÓN CON
FUNCIONES, ARRAYS Y
FUNCIONES DEFINIDAS POR
EL USUARIO
OBJETIVOS DEL CAPÍTULO
• Conocer las principales funciones predefinidas del lenguaje
JavaScript .
• Permiten una gestión más eficaz para las aplicaciones que presentan una
gran cantidad de datos a manipular.
<script type="text/javascript">
var input = prompt("Introduce una cadena");
var inputCodificado = escape(input) ;
alert("Cadena codificada: " + inputCodificado);
</script>
<script type="text/javascript”>
var input = prompt("Introduce una operación numérica”);
var resultado = eval(input);
alert ("El resultado de la operación es: " + resultado);
</script>
isFinite(). comprueba si el argumento corresponde a un número finito.
<script type="text/javascript”>
var input = prompt("Introduce un valor numérico: ");
if (isNaN(input)) {
alert("El dato ingresado no es numérico.”);
}else{
alert("El dato ingresado es numérico.”);
}
</script>
String(). Convierte el objeto pasado a una cadena de texto.
• La base puede ser por ejemplo binaria (2), octal(8), decimal (10) o
hexadecimal (16).
<script type="text/javascript">
var input = prompt("Introduce un valor: ");
var inputParsed = parseFloat(input);
alert("parseFloat("+input+"): " + inputParsed);
</script>
ACTIVIDADES
Crea un script que utilice el método document.write() para mostrar por
pantalla la codificación de todas las vocales con tilde, tal y como vemos
en la Figura 4.3. Recuerde que para obtener dicha codificación debe usar
la función escape() .
• El mejor lugar para definir las funciones JavaScript es dentro las etiquetas
<head> y </head>.
– El nombre de la función.
– Las instrucciones.
3.1 DEFINICIÓN DE FUNCIONES
– la palabra clave return.
function aplicar_IVA(valorProducto) {
var productoConIVA = valorProducto * 1.21; // IVA del 21%
alert("El precio del producto con IVA es: "+ productoConIVA);
}
• Por ejemplo, podemos tener una función que aplica el IVA a una serie de
productos y como argumentos presenta el valor del producto y el
porcentaje del IVA:
• Si por ejemplo, queremos utilizar la función para aplicar el IVA del 18% a
un producto que cuesta 300 euros, no es lo mismo invocar aplicar_IVA
(300, 1.18) que aplicar_IVA (1.18, 300).
function Verificacion(res) {
var compruebaResultado;
if (res == 12) {
compruebaResultado = true;
}else{
compruebaResultado =false;}
return compruebaResultado;
}
</script>
</head>
<body>
<script type="text/javascript">
ComprobarHumano();
</script>
</body>
</html>
Figura 4.5 Función que emplea el retorno de un valor
ACTIVIDADES
• Escriba una función que recibe como parámetro un número entero y
devuelve como resultado una cadena que indica si el número es par o
impar. Muestre el resultado por pantalla a través del método alert() .
Recuerde que puede ser útil el uso del operador módulo %.
console.log(suma(undefined, 5); // 10
3.4. FUNCIONES FLECHA (ARROW)
• Es una forma especial de definir funciones de forma elegante y
simplificada. Son anónimas por definición.
• Continuando con el ejemplo anterior de la suma:
function suma(a, b) {
return a+b;
}
O bien
var suma = function(a, b) {
return a+b;
}
Pasaría a ser en modo flecha lo siguiente:
var add = (a, b) => {
return a + b;
}
Que podríamos simplificar eliminando las llaves:
var add = (a, b) => return a + b;
3.4. FUNCIONES FLECHA (ARROW)
getPromedio(3, 7); // 5
getPromedio(2, 10); // 6
• Esto está mejor, pero como JS nos permite introducir un salto de línea
tras la flecha, obtendremos un código más legible de esta forma:
var getPromedio = (…valores) =>
valores.reduce(
(p, c) => p + c
) / valores.length;
let s1 = “How”;
function external(){
let s2 = “are”;
function inner(){
let s3 = “you”;
return s1+s2+s3;
}
return inner;
}
document.write(producto1);
document.write(producto2);
document.write(producto3);
document.write(producto4);
document.write(producto5);
…………….
document.write(producto180);
– El operador de asignación.
– El constructor Array.
– El paréntesis final.
• Su sintaxis es la siguiente:
var nombre del array = new Array();
• No obstante se recomienda usar la forma: var nombreArray = [];
• Usaremos new para crear una instancia del objeto Array.
codigos_productos.forEach((element,
index,data)=>{
document.write(element + “<br/>”);
};
filter(function(elem, i, a){…})
[7, 4, 1, 23].filter(elem => elem > 5); // => [7, 23]
• Estos 2 ejemplos suman los elementos de Array con los nuevos bucles.
• Equivalen a los vistos anteriormente.
4.4 PROPIEDADES DE LOS ARRAYS
• En JavaScript, un array es en realidad un objeto.
• Tiene una serie de propiedades y métodos al igual que los otros objetos
que hemos estudiado hasta ahora en este libro.
• Esta propiedad es muy útil cuando utilizamos los arrays en los bucles. Su
sintaxis es la siguiente: nombre_del_array.length
• Por ejemplo, anteriormente hemos utilizado un bucle for para imprimir por
pantalla los códigos de determinados productos.
Codigos.productos.forEach((elemento)=>{
document.write(elemento + “<br/>”;
});
• prototype, es mucho más compleja.
• Estos métodos permiten unir dos arrays, ordenarlos, convertir sus valores
o eliminar fácilmente algunos de sus elementos.
• Los principales métodos del objeto Array los vemos en la Tabla 4.3.
Tabla 4.3 Métodos del objeto Array
• Veamos algunos ejemplos de cada uno de los métodos del objeto Array.
4.5 MÉTODOS DE LOS ARRAYS
<script type="text/javascript">
var equipos_a = ["Real Madrid", "Barcelona", "Valencia“] ;
var equipos_b = ["Hércules", "Elche", "Valladolid“] ;
var equipos_copa_del_rey = equipos_a.concat(equipos_b);
document.write("Equipos que juegan la copa: " +
equipos_copa_del_rey);
</script>
4.5 MÉTODOS DE LOS ARRAYS
join(). Devuelve una cadena de texto con los elementos del array.
• Los elementos los podemos separar por una cadena que le pasemos
como argumento del método.
• Si, por ejemplo, tenemos el mismo array de antes con una lista de pizzas y
quisiéramos eliminar la primera de ellas, podemos utilizar el método
shift() de la siguiente manera:
<script type="text/javascript">
var pizzas = ["Carbonara","Quattro_Stagioni",“Diavola“];
var pizza_removida = pizzas.shift();
document.write("Pizza eliminada de la lista: " +
pizza_removida + "<br />“);
document.write("Nueva lista de pizzas: " + pizzas);
</script>
4.5 MÉTODOS DE LOS ARRAYS
<script type="text/javascript">
var premios = ["Coche","1000 Euros","Manual de JavaScript“];
var tercer_premio = premios.pop();
document.write("El tercer premio es: " + tercer_premio + "<br
/>“);
document.write("Quedan los siguientes premios: " + premios);
</script>
4.5 MÉTODOS DE LOS ARRAYS
slice(). Crea un nuevo array con un subconjunto de elementos
pertenecientes a otro array.
<script type="text/javascript">
var apellidos = ["Pérez", "Guijarro", "Arias", "González“] ;
apellidos.sort() ;
document.write(apellidos);
</script>
4.5 MÉTODOS DE LOS ARRAYS
<script type="text/javascript">
var precios = [50, 47, 23, 78, 95, 12, 104, 49] ;
precios.sort(function(a,b){return a – b});
document.write(precios);
</script>
<script type="text/javascript">
var coches = ["Ferrari", "BMW", "Fiat“];
coches.splice(2,0,"Seat") ;
document.write(coches);
</script>
4.5 MÉTODOS DE LOS ARRAYS
<script type="text/javascript">
var numeros = [4, 9, 16, 25, 49];
var busqueda = numeros.find(value => value >18);
document.write(busqueda);
</script>
<script type="text/javascript">
var numeros = [45, 4, 9, 16, 25];
var sobre18 = numeros.findIndex(value => value >18);
document.write(sobre18);
</script>
<script type="text/javascript">
var numeros = [45, 4, 9, 16, 25];
var sobre18 = numeros.some(value => value >18);
document.write(sobre18);
</script>
<script type="text/javascript">
var numeros = [45, 4, 9, 16, 25];
var otrosNumeros = [12, 17, …numeros}];
document.write(otrosNumeros.length); //7
</script>
4.6 ARRAYS MULTIDlMENSIONALES
• Para ello debemos definir un array que contiene a su vez nuevos arrays
en cada una de sus posiciones.
• Podemos pensar en ellos como si fuesen una tabla con filas y columnas,
por lo que necesitamos conocer dos índices para acceder a cada uno de
sus elementos, tal y como podemos ver en la Tabla 4.4.
4.6 ARRAYS MULTIDlMENSIONALES
TABLA 4.4 Array bidimensional visto como tabla
[Filas, Columnas] 0 1 2
0 elemento[0,0] elemento[0,1] elemento[0,2]
1 elemento[1,0] elemento[1,1] elemento[1,2]
2 elemento[2,0] elemento[2,1] elemento[2,2]
• Cada uno de ellos contiene las cinco palabras más buscadas en Internet
en España, Suiza y Portugal.
• Hemos usado una línea de código para definir e inicializar cada elemento,
pero es posible usar los métodos abreviados como describe el siguiente
código:
var palabras_espana = ['facebook', 'tuenti', 'youtube', 'hotmail',
'marca‘];
var palabras_suiza = ['facebook', 'youtube', 'hotmail', 'google',
'blick‘];
var palabras_portugal = ['facebook', 'youtube‘, 'hotmail', 'jogos',
'download‘];
var palabras_mas_buscadas = [palabras_espana, palabras_suiza,
palabras_portugal ];
4.6 ARRAYS MULTIDlMENSIONALES
• Así obtendríamos una estructura similar a una tabla en la que las filas
corresponden a los países y las columnas a las palabras más buscadas en
Internet en cada uno de ellos.
Tabla 4.5 Palabras mas buscadas en Internet en algunos estados
[País, Ranking] 0 1 2 3 4
• Al igual que con los arrays de una sola dimensión, podemos utilizar bucles
para definir e inicializar arrays multidimensionales.
2. Cree un script que tome una serie de palabras ingresadas por el usuario y
almacene esas palabras en un array. Posteriormente, manipule ese array para
mostrar en una nueva ventana los siguientes datos:
a. La primera palabra ingresada por el usuario.
b. La última palabra ingresada por el usuario.
c. El número de palabras presentes en el array.
d. Todas las palabras ordenadas alfabéticamente.
• Una vez declarado el nuevo tipo de objeto podemos crear instancias del
mismo a través de la palabra clave new.
<script type="text/javascript">
var coches = [];
coches[0] = new Coche ("Ferrari", "Scaglietti", "2010");
coches [1] = new Coche ("BMW", "Z4", "2010");
coches[2] = new Coche("Seat", "Toledo", "1999");
coches[3] = new Coche("Fiat", "500", "1995");
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
• Para ello, debemos definir una función que realice las instrucciones que
queramos ejecutar y en la misma sección donde definimos las
propiedades, añadimos el nombre de la función a través de la palabra
clave this.
5.2 DEFINICIÓN DE PROPIEDADES Y MÉTODOS
get area() {
return this.height * this.width;
}
set area(value) {
this.area = value;
}
}
5.3 Ejemplos
Constructores por defecto.
• Si no especifica un método constructor, se utiliza un constructor
predeterminado.
• Para las clases base, el constructor por defecto es:
constructor() {}
• Para las clases derivadas, el constructor por defecto es:
constructor(...args) {
super(...args);
}
Constructor padre
• La palabra clave super se utiliza para acceder y llamar a las funciones del
padre de un objeto.
super([arguments]); // calls the parent constructor.
super.functionOnParent([arguments]);
class Rectangulo {
constructor(height, width) {
this.name = 'Rectangulo';
this.height = height;
this.width = width;
}
sayName() {
console.log(‘Hola, soy un ', this.name + '.');
}
get area() {
return this.height * this.width;
}
set area(value) {
this.area = value;
}
}
5.3 Ejemplos
2. Cree una aplicación que solicite dos números enteros al usuario. Estos
números serán los parámetros de la función que se debe definir y que
devolverá la suma de dichos números. Utilice el método alert() para
mostrar el resultado por pantalla. Es necesario que recuerde el uso del
método parselnt() para controlar los datos que ingresa el usuario.