Нужно немного света на следующее:

У меня есть следующие данные CSV:

0007,X1B2,"John,Jerome, Michelle", Kentucky,"Lawyer,Physician, Cardiologist",765468

Данные состоят из нескольких значений внутри "". У меня проблемы с переформатированием данных в следующий формат:

0007,X1B2,John,Kentucky,Lawyer,765468,
0007,X1B2,Jerome,Kentucky, Physician,765468,
0007,X1B2,Michelle,Kentucky,Cardiologist,765468

Я прочитал данные из файла CSV и сохранил их в переменной. Пожалуйста, просветите. Заранее спасибо.

0
badaBinggg' 27 Фев 2018 в 08:00

3 ответа

Лучший ответ

Предполагая, что у вас есть данные в следующем формате.

var row = [0007,"X1B2","John,Jerome, Michelle", "Kentucky","Lawyer,Physician, Cardiologist",765468]

Тогда твой код будет.

const row = [0007, "X1B2", "John,Jerome, Michelle", "Kentucky", "Lawyer,Physician,Cardiologist", 765468]

// Split string by comma.

const nameArr = row[2].split(',');
const professionArr = row[4].split(',');

let result = nameArr.map((name, index) => [row[0], name, row[1], row[3], professionArr[index], row[5]]);

console.log(result);
0
Laxmikant Dange 27 Фев 2018 в 05:38

Я предполагаю, что вы получите каждую строку csv в переменной JS. Вы можете сослаться на следующий фрагмент кода:

var row = [0007,"X1B2","John,Jerome, Michelle", "Kentucky","Lawyer,Physician, Cardiologist",765468]

var col3Values = [];
if(row[2] && row[2].trim().length > 0) {
    col3Values = row[2].split(",");
}

var col5Values = [];
if(row[4] && row[4].trim().length > 0) {
    col5Values = row[4].split(",");
}

var newRows = [];

for(var i=0;i<col3Values.length; i++) { 
    var newRow = [];
    newRow.push(row[0]);
    newRow.push(row[1]);
    newRow.push(col3Values[i]);
    newRow.push(row[3]);
    newRow.push(col5Values[i]);
    newRow.push(row[5]);
    newRows.push(newRow);
}
0
Nitin Kothwal 27 Фев 2018 в 05:25
var lines = [];
var text = '0007,X1B2,"John,Jerome, Michelle", Kentucky,"Lawyer,Physician, Cardiologist",765468';
var fields = text.split("\"");
var names = fields[1].split(",");
var profession = fields[3].split(",");
fields = text.split(",");
names.forEach(function(name, i){
	lines[i] = fields[0] + ',' + fields[1] + ',' + name + ',' + fields[5] + ',' + profession[i] + ',' + fields[9];
    console.log(lines[i]);
})
0
Nitin Bhapkar 27 Фев 2018 в 05:44