如何使用对象名称将CSV加载到数组

时间:2019-02-10 12:30:23

标签: javascript arrays object

我希望能够将数据存储在CSV文件中,这样我可以更轻松地阅读并将其提供给网页。

CSV格式如下,probname1:“ meat1”,probename2:“ meat2” .......

如果我将数据粘贴到https://www.w3schools.com/js/tryit.asp?filename=tryjs_array_object之类的手册中 有用, 我还尝试直接设置阵列并使用Read CSV headers using Javascript

中的MGot90方法

但是我只能调用每个对象的1个完整值,例如settings [0],而不能按其名称调用对象,例如settings [“ ProbeName1”] 我希望以下内容能够在CSV文件中输出包含以下内容的meat1。 updatevalues.csv = probname1:“肉1”,probename2:“肉2”

loadData();
function loadData() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
parseCSV(this.responseText);
}
};
xmlhttp.open("GET", "js/updatevalues.csv", true);
xmlhttp.send();
}

function parseCSV(string) {
var allTextLines = string;
var settings = [];
var settings = allTextLines.split(",");
document.getElementById("demo1").innerHTML = settings["ProbeName1"];
}`

当前,我只能使用settings [0]使id = demo1来输出ProbeName1:“ meat1”。 如果我使用settings [“ ProbeName1”],它将显示未定义。

2 个答案:

答案 0 :(得分:1)

此函数会将您的csv转换为JSON对象:

function parseCSV(str) {
    var allTextLines = str;
    var settings = [];
    var settings = allTextLines.split(",");
    var results = {};
    var name, val, idx;
    for (var i = 0; i < settings.length; i++) {
        idx = settings[i].indexOf(':');
        name = settings[i].substring(0, idx);
        val = settings[i].substring(idx+2, settings[i].length-1);
        results[name] = val;
    }
    return results;
}

摆弄小提琴:https://jsfiddle.net/p3t7Lv28/

该代码通过使用idx + 2,length-1来去除引号的值

答案 1 :(得分:0)

为什么您不需要我不知道,但也许可以使用SheetJS工具。它用于在网络上显示excel。