Чтобы преобразовать строку в формате CSV в массив объектов на JavaScript, вам необходимо выполнить несколько шагов:
1. Разделить строку по символу новой строки (`\n`), чтобы получить массив строк, представляющих отдельные записи.
2. Извлечь заголовки полей из первой строки, чтобы использовать их в качестве ключей для объектов.
3. Пройтись по оставшимся строкам и разбить каждую из них по запятой, чтобы получить значения.
4. Создать объект для каждой строки, используя заголовки в качестве ключей и значения в качестве значений.
5. Сформировать итоговый массив объектов.
Вот пример реализации данного алгоритма:
```javascript
function parseCSV(csv) {
// Разделяем входную строку на строки
const lines = csv.trim().split('\n');
// Извлекаем заголовки
const headers = lines[0].split(',').map(header => header.trim());
// Создаем массив для хранения объектов
const result = [];
// Обрабатываем каждую строку, начиная со второй (первая - это заголовки)
for (let i = 1; i < lines.length; i++) {
const currentLine = lines[i].split(',').map(value => value.trim());
const obj = {};
// Создаем объект с помощью заголовков
headers.forEach((header, index) => {
obj[header] = currentLine[index];
});
// Добавляем объект в массив результата
result.push(obj);
}
return result;
}
// Пример использования
const csvData = `id,firstName,lastName,quote
42e9f,Linus,Torvalds,Talk is cheap. Show me the code.
4f5e4,Joel,Spolsky,It’s harder to read code than to write it.`;
const parsedData = parseCSV(csvData);
console.log(parsedData);
```
### Пояснение:
1. **Преобразование строки в массив строк**: Используя `split('\n')`, мы разбиваем CSV на массив, где каждый элемент соответствует отдельной строке.
2. **Извлечение заголовков**: Первую строку обрабатываем, разбивая её по запятой и убирая лишние пробелы с помощью `trim()`.
3. **Обработка оставшихся строк**: С помощью цикла `for` проходим по всем строкам, начиная со второй, и создаем объект `obj`, где для каждого поля назначается соответствующее значение.
4. **Формирование результата**: Каждый созданный объект добавляем в массив `result`, который будет возвращен однократно после обработки всех строк.
Этот подход должен корректно обработать строку в формате CSV с указанной структурой.