JavaScript:
Робота з CSV

Як це зробити:

JavaScript не має вбудованої функціональності для аналізу або створення CSV, на відміну від JSON. Проте ви легко можете керувати даними CSV, використовуючи або сирий JavaScript для простіших задач, або вдаючись до потужних бібліотек, як-от PapaParse, для більш складних сценаріїв.

Базовий аналіз за допомогою сирого JavaScript

Для аналізу простого рядка CSV у масив об’єктів:

const csv = `name,age,city
John,23,New York
Jane,28,Los Angeles`;

function parseCSV(csv) {
  const lines = csv.split("\n");
  const result = [];
  const headers = lines[0].split(",");

  for (let i = 1; i < lines.length; i++) {
    const obj = {};
    const currentline = lines[i].split(",");
    
    for (let j = 0; j < headers.length; j++) {
      obj[headers[j]] = currentline[j];
    }
    result.push(obj);
  }
  
  return result;
}

console.log(parseCSV(csv));

Вивід:

[
  { name: 'John', age: '23', city: 'New York' },
  { name: 'Jane', age: '28', city: 'Los Angeles' }
]

Базова генерація до CSV за допомогою сирого JavaScript

Для перетворення масиву об’єктів на рядок CSV:

const data = [
  { name: 'John', age: 23, city: 'New York' },
  { name: 'Jane', age: 28, city: 'Los Angeles' }
];

function arrayToCSV(arr) {
  const csv = arr.map(row => 
    Object.values(row).join(',')
  ).join('\n');
  
  return csv;
}

console.log(arrayToCSV(data));

Вивід:

John,23,New York
Jane,28,Los Angeles

Використання PapaParse для складних завдань з CSV

Для більш складних сценаріїв PapaParse є надійною бібліотекою, придатною для аналізу та формування файлів CSV з опціями для потоків, воркерів і обробки великих файлів.

Аналіз файлу CSV або рядка з використанням PapaParse:

// Після додавання PapaParse до вашого проекту
const Papa = require('papaparse');
const csv = `name,age,city
John,23,New York
Jane,28,Los Angeles`;

Papa.parse(csv, {
  complete: function(results) {
    console.log("Розібрано:", results.data);
  }
});

Генерує:

Розібрано: [
  ["name", "age", "city"],
  ["John", "23", "New York"],
  ["Jane", "28", "Los Angeles"]
]

Створення рядка CSV з масиву з використанням PapaParse:

const data = [
  { name: 'John', age: 23, city: 'New York' },
  { name: 'Jane', age: 28, city: 'Los Angeles' }
];

console.log(Papa.unparse(data));

Генерує:

name,age,city
John,23,New York
Jane,28,Los Angeles

Ці приклади ілюструють базове та розширене управління CSV у JavaScript, спрощуючи обмін даними в веб-додатках і не тільки.