首页 > 解决方案 > Javascript:如何将 XMLHTTPRequest 中的 csv 数据保存在数组中

问题描述

我尝试使用以下代码从 csv 文件中获取一些数据:(csv 文件是几行,它们是表中的不同行)

var newArray = []

function init() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            var lines = this.responseText.split("\n");
            newArray.push(lines)
        }
    }
    xhttp.open("GET", "CMDBsox.csv", true);
    xhttp.send();
}
window.onload = init;

console.log(array)

The csv file looks like this:
(I just noticed that the first element of each line is not in quotes " )

First line: Lorem1, "Lorem2", "Lorem3", "Lorem4",...
Second line: Ipsum1, "Ipsum2", "Ipsum3", "Ipsum4",...
and so on



我将 'lines' 数组推入了一个名为newArray.

现在我可以看到数组,但所有行都在另一个数组中,例如:

0:(21) [...]
0:["Sample1", "Sample2", "Sample3,...]
1:["Example1", "Example2", Example3",...]
2:["Test1", "Test2", "Test3",...]

等等……(21次)

我可以通过以下方式访问不同的数组(行):

"newArray[0][0]", "newArray[0][1]", "newArray[0][2]",...

但现在我有三个问题:

  1. 我可以通过控制台而不是通过代码访问它们......当我写newArray[0][1]我得到错误**"TypeError: array[0] is undefined"**. 但在控制台中我可以看到整个数组?

  2. 如何在数组中创建新数组。例如,现在我有一个大字符串,newArray[0][0]但我需要数组中的单个元素

  3. 我目前通过访问每条“线”,newArray[0][i]但我想通过newArray[i]..如何将它们移动到“上部”数组中来访问它们,这样我就没有那个无用的第一个数组

谢谢你 :)

标签: javascriptarraysxmlhttprequest

解决方案


我不明白您为什么将您的问题转移到读取文件的问题上,而这只是另一个表格副本的问题。
如果您期望得到好的答案,那么提出明确的问题是必不可少的。

所以将数组推入数组是个坏主意,请使用 Object.assign

var arr1 = [ 1,7 ,3 ,4 ,5];

var arr2 = [[]];


Object.assign (arr2[0], arr1)

console.log ('arr1 ...: ', JSON.stringify(arr1));
console.log ('arr2[0] : ', JSON.stringify(arr2[0]));


推荐阅读