JavaScript 2015 (IX). Métodos nativos.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

La nueva normalización de JavaScript incorpora algunos métodos que están destinados a microtareas muy específicas. Son muy pocos, y muy fáciles de aprender a manejar, por lo que los vamos a agrupar todos en este artículo.

Ten cuidado con la documentación que se encuentra en algunos sitios de internet. Verás que te hablan de las clases Math, Number y String. Estas no son, en modo alguno, nuevas. Existen desde hace mucho tiempo, aunque no siempre les hemos sacado el partido posible.

Por otro lado, ten en cuenta que estos operdadores están concebidos para simplificar las microtareas a que se refieren, aunque, antes de JS6 ya existía el modo de realizarlas, aunque fuera más complejo. En todo caso, nos ahorrarán algo de trabajo.

UNIENDO OBJETOS

Con el método Object.assign() podemos unir varios objetos en uno solo. Los objetos se entienden como una colección de propiedades, cada una con un valor asignado. Cada nombre de propiedad se separa del valor mediante dos puntos, y cada propiedad se separa de la siguiente con una coma. El objeto se encierra entre llaves. Vamos, la notación de objetos de JavaScript de toda la vida, para entendernos.

Para ver cómo funciona esto, observa el siguiente código:

El resultado en la consola (volcado en la línea 15) es el siguiente:

Object {nombre: "Pedro", apellidos: "García Torres", nacimiento: "12-10-1956", final_de_carrera: "25-06-1981", basicos: "EGB", carrera: "Derecho Penal"}

En la página obtenemos, mediante las líneas de la 16 a la 21, lo siguiente:

Nombre: Pedro
Apellidos: García Torres
F. Nacimiento: 12-10-1956
F. fin de estudios: 25-06-1981
E. Básicos: EGB
Carrera: Derecho Penal

El método assign() pertenece, como ves a Object. Object es la clase raíz, de la que derivan internamente todas las demás clases definidas en un lenguaje. Los desarrolladores que trabajan con Java están habituados a esto. Este método recibe dos o más argumentos que son, como ves en el listado, nombres de objetos. Lo que hace es encadenarlos todos y almacenar el resultado en el primer objeto. Los demás objetos no son modificados.

Cabe destacar que si el segundo objeto o los siguientes tienen alguna propiedad repetida (con el mismo nombre), la última “machaca” a las anteriores. Así, si en el ejemplo que hemos visto tuviéramos, por ejemplo, en el objeto fechas, una propiedad llamada nombre, con el valor "Luis", sería este último el que quedaría, y "Pedro" desaparecería.

ENCONTRAR ELEMENTOS

Ahora es posible encontrar elementos en una matriz, mediante el uso del método find(). Su sintaxis es un poco incómoda. Lo cierto es que somos muchos los que pensamos que deberían haber diseñado este método de una forma más simple, pero es cómo es, y hay que aceptarlo. Este método busca un elemento en una matriz. Si existe, nos devuelve dicho elemento. Si no, nos devuelve undefined.

También contamos con el método findIndex(), que nos devuelve la posición que un elemento ocupa en una matriz. Si el elemento no existe, nos devuelve -1 y, al igual que el anterior, tiene una sintaxis un poco incómoda.

En el siguiente código vemos como operan estos métodos:

El resultado en la página es el siguiente:

Marta
2
undefined
-1

En las líneas 11 y 12 hemos buscado un elemento que sí existe, y el índice que tiene. Vemos que se nos retorna dicho elemento y su índice. En las líneas 13 y 14 hemos buscado un elemento que no existe. Vemos que se nos retorna undefined y -1.

Como es lógico, pensamos que el argumento para los métodos find() y findIndex() debería ser, directamente, el elemento que estamos buscando, sin más. Sin embargo, eso no funciona. En su lugar hay que poner, cómo argumento, una función que haga la comparación con el elemento que buscamos, siguiendo la sintaxis de funciones con operador flecha que vimos en el artículo VII de esta serie. Francamente, creo que han diseñado estos métodos así, sólo porque era la única manera de que las funciones con operador flecha sirvieran para algo. Pero, oye, sólo es mi opinión.

 

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *