CSV转JSON
将逗号分隔值(CSV)字符串转换为二维对象数组。 字符串的第一行将用作标题行。
- 使用
Array.prototype.indexOf()
找到第一个换行符(\n
)的位置。 - 使用
Array.prototype.slice()
删除第一行(标题行),并使用提供的delimiter
将其分割为值。 - 使用
String.prototype.split()
创建每一行的字符串。 - 使用提供的
delimiter
将每一行的值分割开。 - 使用
Array.prototype.reduce()
为每一行的值创建一个对象,其中键从标题行解析而来。 - 如果不提供第二个参数
delimiter
,则使用默认的逗号分隔符,
。
const CSVToJSON = (data, delimiter = ',') => {
const titles = data.slice(0, data.indexOf('\n')).split(delimiter);
return data
.slice(data.indexOf('\n') + 1)
.split('\n')
.map(v => {
const values = v.split(delimiter);
return titles.reduce(
(obj, title, index) => ((obj[title] = values[index]), obj),
{}
);
});
};
CSVToJSON('col1,col2\na,b\nc,d');
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];
CSVToJSON('col1;col2\na;b\nc;d', ';');
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];