function CSVsum(filename){ var res = []; //Open the file and split into rows based on linebreaks var file = fs.readFileSync(filename,{encoding: 'utf-8', flag:'r'}).split('\n'); console.log(file) //Split each item in table into values. for (i = 0; i < file.length; i++) { file[i] = file[i].split(','); } //Using linebreaks to split rows creates an empty final value, so use .pop to remove file.pop() //Function to transpose rows into columns const transpose = arr => { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < i; j++) { const tmp = arr[i][j]; arr[i][j] = arr[j][i]; arr[j][i] = tmp; } } } //Run transpose function on file transpose(file) console.log(file) for(let i=0; i<file.length; i++){ let column = file[i]; let columnSum= 0.0; for(let i=0; i<column.length; i++){ let value = parseFloat(column[i]); if(isNaN(value) === false){ columnSum += value; } } res.push(parseFloat(columnSum)); } return res }Básicamente he escrito la función anterior. Su función prevista debe ser leer un CSV y luego sumar cada columna. Para el ejercicio, no se me permite importar nada adicional.
La función funciona en su mayor parte, excepto que la función de transposición por alguna razón agrega un objeto de matriz adicional lleno de 'indefinido'. Como resultado, donde la salida debería ser x, y, z, en su lugar es x, y, z, 0. Sé que podría usar .pop para eliminar el elemento final, pero ya lo hice una vez cuando lo haría. Prefiero no usarlo en absoluto. ¿Qué estoy haciendo mal? Logré lograr el resultado deseado en python con zip (* archivo), así que estoy tratando de lograr un efecto similar aquí.
PD: Sé que esto no es lo mejor, así que si alguien nota algo que necesita mejorar, ¡no dude en hacérmelo saber!