javascript - 如何将 CSV 加载到包含对象名称的数组

标签 javascript arrays object

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

CSV格式如下,probname1:"meat1", probname2:"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:"meat1", probename2:"meat2"

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"。 如果我使用设置 ["ProbeName1"],它将显示未定义。

最佳答案

此函数会将您的 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;
}

fiddle 工作:https://jsfiddle.net/p3t7Lv28/

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

关于javascript - 如何将 CSV 加载到包含对象名称的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616387/

相关文章:

ios - 如何从 Cloud Firestore 上的对象检索值? swift

javascript - 在 for-in-loop 中创建新对象

javascript - 当特定文本显示在另一个 div 中时,jQuery 替换 div 中的文本(动态更新的 Shopify 定价变体)

java - 用 dat 文件填充 arrayList

arrays - 如果只允许单位移位,则计算对数组进行排序的移动次数

arrays - 将多个值存储在json中的单个键中

c++ - cpp中的cin对象

javascript - 如何正确使用本地存储?

javascript - 高度使我的图像上出现了损坏的图像链接

javascript - 如何隐藏机器人窗口/iframe