javascript - 如何使用对象名称将 CSV 加载到数组中
问题描述
我希望能够将数据存储在我的 CSV 文件中,以便我可以更轻松地阅读它并将其提供给网页。
CSV 格式如下,probname1:"meat1", probename2:"meat2".......
如果我将数据粘贴到手册中,例如https://www.w3schools.com/js/tryit.asp?filename=tryjs_array_object 它可以工作,我还尝试直接设置我的数组并使用 MGot90 的方法从Read CSV headers using Javascript
但是我只能调用每个对象的 1 个完整值,例如 settings[0],而不是按对象的名称调用对象,例如 settings["ProbeName1"] 我希望以下内容能够在 CSV 文件中输出带有以下内容的肉 1。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"];
}`
目前我只能使用设置 [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;
}
小提琴工作:https ://jsfiddle.net/p3t7Lv28/
该代码通过使用 idx+2, length-1 从值中去掉引号
推荐阅读
- terraform - Terraform:在 aws_cloudfront_distribution 资源中传递多个别名
- python - 嵌套列表循环索引
- reactjs - PM2 解释器没有在我的开发环境中使用 babel 来响应应用程序
- android - 将 com.android.tools.build:gradle 更新到 3.3.0 或 3.4.X 后无法进入课堂
- django-models - 从 django 模型中查看图像
- powershell - Get-ADGroupMember :由于用户尚未通过身份验证,因此未执行所请求的操作
- python - 使用 sympy 将 PDE 从笛卡尔坐标转换为柱坐标
- android - 有哪些可靠的方法可以从家庭媒体检测活动恢复?
- java - 如何从 RESTful Web 服务中获取一些数据,并将其保存到数据库中?
- python - 将数据流式传输到数据库以供 Flask 应用使用