Tengo un pequeño problema que es cómo copiar una columna específica de un archivo csv a una matriz usando javascript
gracias :)
csv los datos se representan mejor en javascript usando una matriz de matrices (una matriz de 2 dimensiones) con índices primarios que representan filas (registros en terminología de base de datos) y los índices internos que representan celdas de columna para esa fila (campos en terminología de base de datos) .
Por lo tanto, estos datos csv:
"name","age","height" "John",22,1.9 "Jane",21,1.9 "Joe",23,1.8se representaría como:
[["name","age","height"],["John",22,1.9],["Jane",21,1.9],["Joe",23,1.8]];
en una matriz de javascript.
Si tiene una matriz como esa, puede extraer una columna (la primera columna, índice de matriz interna [0] en este caso, fácilmente con:
const columnArray = []; for (let i=0; i<csvArray.length; i++){columnArray.push(array1[i][0])} // columnArray now holds ["name","John","Jane","Jo"]; // use [1] instead of [0] for the second column, [2] for the third, etc.;Si aún no tiene la matriz, tendrá que formar una. Muchos marcos pueden hacer esto por usted, pero se logra fácilmente una vez que tiene los datos csv dentro de una variable:
const csvFileData = // read from textarea or file; const csvArray = csvFileData.split('\n') // csvArray holds ['"name","age","height"', '"John",22,1.9', '"Jane",21,1.9', '"Joe",23,1.8'] at this stage; // split the inner arrays to arrays of cell data; for (let i=0; i<array1.lengthl; i++){array[i]=array[i].split(',')} // We've replaced each element with an array holding the component cells of what was previously a row; // csvArray now holds: [["name","age","height"],["John",22,1.9],["Jane",21,1.9],["Joe",23,1.8]];Esa matriz final ahora se puede procesar para extraer la columna requerida como se muestra arriba.
Finalmente, todo esto supone que puede obtener los datos csv en una variable (recuerde que tiene saltos de línea). Fetch() es probablemente la forma estándar, pero una alternativa simple (aunque sucia) que uso a menudo es asignar el valor de un área de texto html en la que he pegado el contenido del archivo csv, directamente a una variable:
const csvFileData = document.getElementById('textareaOnWebPage').value;