Formatear listas en Javascript

20/Ene/2021 JavaScript , Deja un comentario
Artículos Programación en Javascript

En el artículo de hoy vamos a seguir viendo cómo se puede seguir utilizando el objeto Intl para dar formatos atendiendo a un modelo i18n. En este caso vamos a ver cómo formatear listas en Javascript. En concreto vamos a utilizar el objeto Intl.ListFormat.

Pero qué es eso de la internacionalización del formato de las listas en Javascript. La idea es que nos permita convertir a un formato texto una lista de elementos. De esta forma si tenemos una lista de elementos nos los presente de la siguientes formas

elemento1, elemento2 y elemento3 //si es una lista conjuntiva
elemento1, elemento2 o elemento3 // si es una lista disyuntiva
elemento1 elemento2 elemento3 //si es una enumeración de elementos

Además la gracia es que me lo haga atendiendo al idioma, por lo que esto mismo en inglés sería

elemento1, elemento2 and elemento3 //si es una lista conjuntiva
elemento1, elemento2 or elemento3 // si es una lista disyuntiva
elemento1 elemento2 elemento3 //si es una enumeración de elementos

Pongámonos manos a la obra para poder ejecutarlo. Lo primero de todo será el tener la lista de elementos. En este caso vamos a tener una lista de ciudades, para ello declaramos la siguiente constante:

const ciudades = ['Avila','Salamanca','Segovia'];

Ahora vamos a instanciar el objeto Intl.ListFormat. Al igual que el resto de objetos de tipo Intl tiene dos parámetros. El primero corresponde al locale en un formato etiqueta representada por un código BCP 47 . Por lo que tendremos una etiqueta con 2 o 4 caracteres si aplicamos el país del estilo es-ES, en-US, ar-EG,… o es, en, ar,…

Y el segundo parámetro serán las opciones, en formato JSON, que le queremos dar a la lista. En este caso manejamos dos valores:

  • style, cuyos valores son «long», «short» o «narrow» y corresponde a lo largo o corto que queramos el texto.
  • type, nos permite indicar de que tipo es la lista. Como vimos en el ejemplo si es «conjuction», «disjunction» o «unit».

Así, si queremos una lista donde sea de tipo larga y que sea una lista conjuntiva invocaremos al constructor del objeto Intl.ListFormat de la siguiente manera.

const formatter = new Intl.ListFormat('es', { style: 'long', type: 'conjunction' });

Solo nos quedará el llamar al método .format() para poder dar formato a la lista de valores. Es por ello que pasamos el valor de la lista a dicho método.

console.log(formatter.format(ciudades));
// Ávila, Salamanca y Segovia

Veamos como quedaría el código completo con diferentes maneras de formatear listas en Javascript.

const ciudades = ['Avila','Salamanca','Segovia'];

const formatter = new Intl.ListFormat('es', { style: 'long', type: 'conjunction' });
console.log(formatter.format(ciudades));

const formatter2 = new Intl.ListFormat('es', { style: 'long', type: 'disjunction' });
console.log(formatter2.format(ciudades));

const formatter3 = new Intl.ListFormat('es', { style: 'narrow', type: 'unit' });
console.log(formatter3.format(ciudades));

Espero que este nuevo artículo sobre formatos internacionales en Javascript os sea de utilidad.

Vídeos sobre Javascript


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.