我需要将数据从 csv 文件转换为 JavaScript 对象,其中每个对象的键是数据中的 ID。每个用户一个 JS 对象。
问题:有没有办法使用 vanilla JS 解决它?
我至少需要大致了解一下该怎么做,因为我所能找到的只是使用 jQuery 或 JSON 解决此问题的方法,但对于我试图了解的研究,我无法找到使用专门的库,我只能使用普通的 VanillaJS。
示例文本数据:
id first_name last_name email gender
-- ---------- --------- ----- ------
1 Gloria Mendez gmendez@ipu.gov Female
2 Lucy Grey lgrey@gmail.com Female
3 Max Mcolom mmcolom@yahoo.com Male
4 David Cooke dcooke@gmail.com Male
5 Marwin Darge mdarge@gov.com Male
hundreds of other rows
期望的输出:
{
1: {
id: 1, first_name: 'Gloria', last_name: 'Mendez', email: 'gmendez@ipu.gov', gender: 'female'
},
2: {
id: 1, first_name: 'Lucy', last_name: 'Grey', email: 'lgrey@gmail.com', gender: 'female'
},
...
}
最佳答案
在下面使用 vanilla JS。
我添加了注释来解释代码的作用。它基本上是将数据分成行,然后是单元格,并在此过程中进行数组操作:
let table =
`id first_name last_name email gender
-- ---------- --------- ----- ------
1 Gloria Mendez gmendez@ipu.gov Female
2 Lucy Grey lgrey@gmail.com Female
3 Max Mcolom mmcolom@yahoo.com Male
4 David Cooke dcooke@gmail.com Male
5 Marwin Darge mdarge@gov.com Male`
// Split into rows, and then split each row into cells
let rows = table.split(/[\r\n]+/g).map(row => row.trim().split(/[\s\t]+/g));
// The first row will be the header
let header = rows[0];
// The rest is the data
let data = rows.slice(2);
// Create a function to return the desired object structure
function formatObject(headers, cells) {
return headers.reduce((result, header, idx) => {
result[header] = cells[idx];
return result;
}, {});
}
// Reduce each row into the desired format, and use the ID as a key
let result = data.reduce((res, row, idx) => {
let value = formatObject(header, row);
res[value.id] = value;
return res;
}, {});
// Log the result
console.log(result);
关于javascript - 不使用库从 csv 文件中的文本数据创建 javascript 对象的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48015270/