Definición:
Un array asociativo es un Objeto de JavaScript que representa un tipo de dato y relaciona una Clave (key) con un dato Valor. Su Estructura esta definida { } y los TAGs montados en la siguiente forma: key : value. De esta forma su estructura es semejante a un archivo JavaScript Object Notation File (JSON) pero se diferencia en que son objetos dato.
Ejemplo:
let miAsociativo = {'nombre': 'Jon', 'ciudad' : 'Bogota', 'fecha': '10 Enero 2020'};
Acceder a los datos o las keys involucra negociar usando una estrategia en JS donde tomamos todo el array asociativo y llamamos a su propiedad.
Object.keys
Con el obtenemos un array indexado de sus Keys. Un ejemplo práctico sería:

Object.values
Con el obtenemos los valores del array asociativo. Su código de implementación sería :
console.log('Soy un array indexado de los values de un asociativo -->',Object.values(miAsociativo));
Aplicación Actual de una array Asociativo:
Si bien el JavaScript (JS), emigro de los browsers para quedarse en nuestras vidas, ¿Qué pasa cuando los datos que manejamos son archivos? . Ya tenemos varios Módulos para tratar estos requerimientos.!!!!
csv-parser (transformar archivos de CSV en arrays con JS)
Dados que los Archivos CSV tienen formatos y reglas muy distintas a los array en JS por ser un tipo DATASET no es imposible tratarlos.
Este proyecto de tipo OPENSource esta disponible desde el gestor de Módulos ("paquetes") npm. Sus detalles están a disposición de todos.
Visita https://www.npmjs.com/package/csv-parse.
los pasos para su uso son muy sencillos:
- Primero abre tu Microsoft Excel (el más actualizado) convierte tu tabla Excel a formato CSV. ve a FILE --> SAVE AS --> (ELIGE TIPO) csv utf-8
- Segundo la Locación del archivo de ser el mismo que tu script. Ejemplo C:\clase2.js , entonces miarchivo.csv
- Tercero Instala localmente el modulo usando el npm ( debes tener una versión actual de NODEjs instalada en tu PC. ver https://nodejs.org/en/download/ ) esto lo haces en tu Terminal escribiendo
C:\tuFolderDirectorio> npm i -s csv-parser C:\TuDirectorio> npm i -s fs
suponiendo usas Windows. pero si es Linux tu preferencia usa "sudo" + tu instrucción + ENTER.
- Cuarto requiere tu modulo. En este punto El streaming del archivo debe realizarce por ello usas 'fs' y luego el csv-parser
var fs = require('fs');
var parse = require('csv-parser');
Acá se puede destacar que no es estricto la manera como deseas abarcar tu estrategia. Puedes usar un 'const' si la pasaras como parámetros a las funciones que creas o lo usas como un apuntador de referencia a sus funciones como módulo (closure ) con 'var'.
- Quinto usas una estrategia según tu aplicación (ver https://csv.js.org/parse/options/) en este caso me interesa las celdas con sus valores y los títulos de cada columna de mi archivo CSV.
const parseador = parse({
delimiter: ';',//Delimitador, por defecto es la coma ,
cast: true, // Intentar convertir las cadenas a tipos nativos
comment: '#' // El carácter con el que comienzan las líneas de los comentarios, en caso de existir
});
siguiendo esta estrategia, cada vez que el streaming me da un caracter seguido por un ';' trato de tomar su valor numérico o string. Recuerda cada celda comienza en ';' y termina en ';'.
- Sexto con la estrategia definida tomas la propiedad 'readable', para poder extraer la información del CSV file
parseador.on('readable', function () {
let buf = new Array();
let buf2 = new Array();
let buf3 = new Array();
let tags = new Array();
var i = 0;
let criptomoneda = new Array(); // soy un array
if(fila = parseador.read()) {
buf.push(Object.keys(fila));
// soy un array asociativo o lista tipo diccionario
}
var buf_str = new String(buf[0]);
tags = buf_str.split(";");
tags.pop();
while(fila = parseador.read()) {
buf2.push( new String(Object.values(fila)));
}
var j;
for(i = -1; i < buf2.length; i++){
buf3 = buf2[1].split(";");
for( j = 0; j < tags.length; j++){
criptomoneda[tags[j]] = buf3[j];
}
}
console.log(criptomoneda);
//console.log(tags);
});
y listo acá ya tiene tu array asociativo de una fila y así con todo tu archivo.
- Solo resta invocarlo cuando creas el streaming del archivo.
fs.createReadStream("criptomonedas.csv") // Abrir archivo
.pipe(parseador) // Pasarlo al parseador a través de una tubería
.on("end", function () {// Y al finalizar, terminar lo necesario
console.log("Se ha terminado de leer el archivo");
parseador.end();
});
para mi ejemplo el resultado en mi visual studio code es :

Si deseas conocer un poco mas Puedes contactarme y con gusto puedo dictarte un curso de array o alguna clase particular.