CSV в JSON
Для преобразования строки, разделенной запятыми (CSV), в двумерный массив объектов и использования этого для практики программирования откройте Терминал/SSH и введите node
. Первая строка строки используется в качестве заголовочной строки. Вот шаги по преобразованию CSV в JSON:
- Используйте
Array.prototype.indexOf()
, чтобы найти первый символ новой строки (\n
).
- Используйте
Array.prototype.slice()
, чтобы удалить первую строку (заголовочную строку), и String.prototype.split()
, чтобы разделить ее на значения, используя заданный разделитель
.
- Используйте
String.prototype.split()
, чтобы создать строку для каждой строки.
- Используйте
String.prototype.split()
, чтобы разделить значения в каждой строке, используя заданный разделитель
.
- Используйте
Array.prototype.reduce()
, чтобы создать объект для значений каждой строки, с ключами, разобранными из заголовочной строки.
- Игнорируйте второй аргумент,
разделитель
, чтобы использовать по умолчанию разделитель ,
.
Вот код:
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'}];