Introdução
Neste laboratório, exploraremos como converter uma string de valores separados por vírgula (CSV - comma-separated values) em um array 2D de objetos usando JavaScript. Usaremos vários métodos de manipulação de strings, como split() e slice(), juntamente com métodos de array como reduce() e map() para realizar essa conversão. Este laboratório ajudará você a entender como trabalhar com dados CSV em JavaScript e como manipulá-los em um formato que pode ser facilmente processado.
CSV para JSON
Para converter uma string de valores separados por vírgula (CSV) em um array 2D de objetos e usá-la para praticar a codificação, abra o Terminal/SSH e digite node. A primeira linha da string é usada como linha de título. Aqui estão os passos para converter CSV para JSON:
- Use
Array.prototype.indexOf()para encontrar o primeiro caractere de nova linha (\n). - Use
Array.prototype.slice()para remover a primeira linha (linha de título) eString.prototype.split()para separá-la em valores, usando odelimiterfornecido. - Use
String.prototype.split()para criar uma string para cada linha. - Use
String.prototype.split()para separar os valores em cada linha, usando odelimiterfornecido. - Use
Array.prototype.reduce()para criar um objeto para os valores de cada linha, com as chaves analisadas da linha de título. - Omita o segundo argumento,
delimiter, para usar um delimitador padrão de,.
Aqui está o código:
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),
{}
);
});
};
Para testar a função, use os seguintes exemplos:
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'}];
Resumo
Parabéns! Você concluiu o laboratório de CSV para JSON. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.