Читать содержимое ячеек объекта data

Я прочитал CSV-файл, используя код JavaScript, и я хочу вставить его в 2D-массив, чтобы сделать некоторую обработку

var dataArray = new Array;
        function parseCSV(dataArray) {
            //replace UNIX new lines
            data = data.replace(/\r\n/g, "\n");
            //replace MAC new lines
            data = data.replace(/\r/g, "\n");
            //split into rows
            var rows = data.split("\n");

            // loop through all rows
            for (var i = 0; i < rows.length; i++) {
                // this line helps to skip empty rows
                if (rows[i]) {
                    // our columns are separated by comma
                    var column = rows[i].split(",");


                    var date=column[0];
                    var value = column[4];

                    // create object which contains all these items:
                    var dataObject = {
                        date: date,
                        T4: value 
                    };  
                   dataArray.push(dataObject);
                }
            }   
        } 
        }

В качестве теста я пытаюсь прочитать содержимое ячейки и отобразить на веб-странице, чтобы убедиться, что я прочитал файл.

<script type="text/javascript">
       var x= dataArray[1][4];
        document.write(x);
    </script>

но это ничего не показывает. Может кто-нибудь помочь??

2 ответа

Решение
var dataArray = new Array;

var data = "Date,Description,Created By,Modified By,T4 Tag\n";
data += "20170424,This is record 1,user1,none,Just work please.\n";
data += "20170424,This is record 2,user2,none,I'm trying too.\n";

function parseCSV(dataArray) {
    //replace UNIX new lines
    data = data.replace(/\r\n/g, "\n");
    //replace MAC new lines
    data = data.replace(/\r/g, "\n");
    //split into rows
    var rows = data.split("\n");

    // loop through all rows
    for (var i = 0; i < rows.length; i++) {
        // this line helps to skip empty rows
        if (rows[i]) {
            // our columns are separated by comma
            var column = rows[i].split(",");


            var date=column[0];
            var value = column[4];

            // create object which contains all these items:
            var dataObject = {
                date: date,
                T4: value 
            };  
           dataArray.push(dataObject);
        }
    }   
} 
parseCSV(dataArray);

Не имея файла, я вынудил некоторые данные CSV в строку для обработки. Ваш вопрос не показывает эти два пункта:

  1. как вы устанавливаете переменные данные
  2. как вы вызываете parseCSV(dataArray)

Если эти две вещи присутствуют, все должно работать - вот доказательство


Что касается части HTML-скрипта:

адресация вашего массива выглядит неправильно - похоже, она должна выглядеть так:

<script>
  var x = dataArray[1].T4;
  document.write(x);
</script>

Вот мои рассуждения:

Я понимаю, что вы передаете данные CSV в эту функцию для анализа в вашей переменной dataArray - правильно?

Если все правильно, эти данные будут выглядеть примерно так, как я добавил вручную (я добавил это напрямую, только для работы с чем-то).

Чем больше элемент, тем не менее, откуда поступают данные, но в конечном итоге он анализируется этой функцией parseCSV.

Когда это происходит, вы создаете добавление к пустой переменной dataArray следующим образом:

Для первого прохода это будет выглядеть следующим образом:

[{"date": "Date", "T4": "Tag T4"}]

Для второго прохода:

[{"date": "Date", "T4": "Tag T4"}, {"date": "20170424", "T4": "Просто работайте, пожалуйста."}]

Для третьего прохода:

[{"date": "Date", "T4": "Tag T4"}, {"date": "20170424", "T4": "Просто работай, пожалуйста."}, {"date": "20170424", "T4": "Я тоже пытаюсь."}]

Так что теперь, когда вы в своем HTML раздел кода, у вас нет ключа адреса [4].

Ваш код говорит:

var x = dataArray[1][4];

Рассмотрим следующее, чтобы понять, что я имею в виду:

var record = dataArray[1];
//{"date" : "20170424", "T4" : "Just work please."}
//There is no key 4 here only date & T4.
var date = record.date;//returns: "20170424"
var t4 = record.T4;//returns: "Just work please."

В отличие от этого, если бы у вас было следующее - ваш метод работал бы

myObj = {"date" : "20170424", "4" : "This is a value for field 4", "T4" : "Just work please."}
myObj[4];//returns "This is a value for field 4";

надеюсь, это объясняет это достаточно ясно.

Здесь функция загрузки файла CSV

function loadCSV(file) {
            if (window.XMLHttpRequest) {
                // IE7+, Firefox, Chrome, Opera, Safari
                var request = new XMLHttpRequest();
            } else {
                // code for IE6, IE5
                var request = new ActiveXObject('Microsoft.XMLHTTP');
            }
            // load
            request.open('GET', file, false);
            request.send();
            parseCSV(dataArray);
        }
Другие вопросы по тегам