gpt4 book ai didi

javascript - 将 FileReader 的结果转换为 javascript 对象

转载 作者:行者123 更新时间:2023-11-30 17:24:08 26 4
gpt4 key购买 nike

我正在使用 Javascript FileReader。我想读入 FileReader 的结果,然后将每条记录转换为 JS 对象。使用以下代码:

$("#csv").bind("change", function (event) {
var reader = new FileReader();
reader.onload = function (theFile) {
try {
var input = $.csv.toArrays(theFile.target.result);
alert("CSV loaded successfully");
alert(input);
}
catch (e) {
alert("CSV Parse error.");
return;
}
};
reader.readAsText(event.target.files[0]);
});
}

alert(input) 会将整个 csv 文件显示为字符串。我将如何从这个输入创建一个 javascript 对象数组或 JSON 字符串?换句话说,我假设我需要在第一行中读取属性集,然后每条记录都会创建一个具有该属性集的对象,并将这些对象中的每一个插入到一个数组中。

例如,来自以下字符串:

姓名、年龄、性别

约翰,20岁,男

我想创建一个对象:

{ Name: "John", Age: 20, Gender: "Male" }

提前致谢!

最佳答案

使用正则表达式

/[\w .]+(?=,?)/g

您可以按照您提到的格式从 csv 文件中提取数据(如果 .csv 文件和数据的格式不同,则需要更改 RegEx)。

Demo-RegEX

Working-Demo

示例数据。给定格式

Name,Age,Gender
John,20,Male
Cristine ,34,FeMale
Kate Wilson,65, FeMale
Mike,45,Male
Peter,23,Male
Katty,11,FeMale
Sandy,78,Mal

代码

var str = $('#regex_string').val();
var extractValidString = str.match(/[\w .]+(?=,?)/g)

var noOfCols = 3
//in your case it is name,age,gender so we need 3

var objFields = extractValidString.splice(0,noOfCols);
//extract columns - First Row
var arr = [];
while(extractValidString.length>0) {
var obj = {};
//extract remaining rows one by one
var row = extractValidString.splice(0,noOfCols)
for(var i=0;i<row.length;i++) {
//make an object and put each column and set its data
obj[objFields[i]] = row[i].trim()
}
//push row to an array
arr.push(obj)
}
console.log(arr);

//output
[Object, Object, Object, Object, Object, Object, Object]
0: Object
Age: "20"
Gender: "Male"
Name: "John"
1: Object
Age: "34"
Gender: "FeMale"
Name: "Cristine"
2: Object
Age: "65"
Gender: "FeMale"
Name: "Kate Wilson"
3: Object
Age: "45"
Gender: "Male"
Name: "Mike"
4: Object
Age: "23"
Gender: "Male"
Name: "Peter"
5: Object
Age: "11"
Gender: "FeMale"
Name: "Katty"
6: Object
Age: "78"
Gender: "Male"
Name: "Sandy"
length: 7

关于javascript - 将 FileReader 的结果转换为 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24587617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com