Считать локальный CSV-файл в 2D-массив - Javascript - PullRequest
1 голос
/ 14 января 2020

Надеюсь, я мог бы получить некоторую помощь с чтением файла CSV в 2d массив для приложения узла.

Я видел другие вопросы с ответами, которые предлагают пакеты papaparse, jquery -csv и csv npm. Я прочитал документацию для каждого из этих решений и не вижу, где в процессе моя программа будет читать CSV.

У меня есть файл csv в папке с документами: C: \ Documents \ Folder \ data.csv, например.

Я надеялся, что программа сможет прочитать data.csv, отформатированный примерно так:

header0 header1 header2 header3 header4 header5 header6 header7 header8 header9   
data    data    data    data    data    data    data    data    data    data   
data    data    data    data    data    data    data    data    data    data   

и поместить его в массив с именем myarray

myarray [0 ] [9] выдаст мне header9 и т. Д.

Вот что я имею при попытке jquery -csv

var fs = require('fs');
var csv = require('./jquery.csv.js');
var sample = 'C:\Documents\Folder\data.csv';

var myarray = $.csv.toArrays(sample);

Я получаю ошибку

ReferenceError: $ is not defined
    at Object.<anonymous> (C:\Users\0121160\Documents\Nodejs\readcsv.js:7:14)
[90m    at Module._compile (internal/modules/cjs/loader.js:959:30)[39m
[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)[39m
[90m    at Module.load (internal/modules/cjs/loader.js:815:32)[39m
[90m    at Function.Module._load (internal/modules/cjs/loader.js:727:14)[39m
[90m    at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)[39m
[90m    at internal/main/run_main_module.js:17:11[39m

примечание: у меня очень минимальный опыт работы с javascript, node, jquery.

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 14 января 2020

В сообщении об ошибке указано $ is not defined, поэтому вам нужно использовать var myarray = csv.toArrays(sample);.

Переменная $ ничего не значит для вашей программы, поскольку вы не импортировали ничего, что было присвоено переменной $.

Я также сомневаюсь, что var csv = require('./jquery.csv.js'); сработает, вам, вероятно, придется npm install jquery-csv и затем импортировать var csv = require('jquery-csv') в свой модуль.

0 голосов
/ 14 января 2020

jQuery предназначен для помощи в выполнении общих задач с JavaScript, встроенным в веб-страницу. jQuery CSV - это плагин для него.

Поскольку вы пишете программное обеспечение для запуска на Node.js, а не на веб-странице, jQuery не является отличным выбором библиотеки ... так что не используйте это или плагин для него.

Получить CSV-парсер, оптимизированный для Node.js, такой как csv-parser :

const fs = require('fs');
const csv = require('csv-parser')

const path = 'C:/Documents/Folder/data.csv';
const results = [];

fs.createReadStream(path)
  .pipe(csv())
  .on('data', (data) => results.push(data))
  .on('end', () => {
    console.log(results);
  });
0 голосов
/ 14 января 2020

С https://www.npmjs.com/package/jquery ...

Чтобы включить jQuery в узел, сначала установите с npm.

npm install jquery

Чтобы jQuery работал в Node, требуется окно с документом. Поскольку в Node такого окна изначально не существует, его можно посмеять с помощью таких инструментов, как jsdom. Это может быть полезно для тестирования.

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});
...