读取数据对象的单元格内容

read cells content of dataobject

我使用 javascript 代码读取了一个 csv 文件,我想将它推入一个二维数组以便进行一些处理

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>

但它没有显示任何内容。 谁能帮忙??

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. 你是如何设置的 var data
  2. 你如何调用 parseCSV(dataArray)

如果这两件事都存在,一切都应该有效 - Here's the proof


至于 html 脚本部分:

你的数组寻址看起来不对 - 它看起来应该是这样的:

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

这是我的推理

我了解到您正在将 CSV 数据传递给此函数以将其解析为您的 dataArray 变量 - 对吗?

如果正确,这些数据看起来就像我手动添加的(我直接添加它只是为了处理某些事情)。

更大的项目与其说是数据的来源,不如说是它最终被这个 parseCSV 函数解析。

发生这种情况时,您将通过以下方式向空 dataArray 变量添加附加内容:

对于第一遍,这将如下所示:

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

第二遍:

[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."}]

第三关:

[{"date":"Date","T4":"T4 Tag"},{"date":“20170424”,"T4":"Just work please."},{"date":“20170424”,"T4":"I\'m trying too."}]

所以现在当您在 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);
        }