2014-04-29 7 views
1

Je dispose d'un fichier CSV cinque ce genre de lignes:Split du fichier csv

1, New York ville, 8175133,40.71455, -74,007124

2, ville de Los Angeles, 3792621,34.05349, -118,245323

que je fais cette méthode pour diviser:

function processData(csv) { 
    var allTextLines = csv.split(/\r\n|\n/); 
    var lines = []; 
    while (allTextLines.length) { 
     lines.push(allTextLines.shift().split(',')); 
    } 
    console.log(lines); 
    drawOutput(lines); 
} 

Mais il ne fonctionne pas comme la façon dont je veux. Je voudrais juste une partie de la chaîne et non la ligne entière:

lines[0] = New York City, 40.71455, -74.007124 

lines[1] = Los Angeles city, 34.05349, -118.245323 

Est-ce possible? Comment puis-je le diviser de cette façon? Déjà essayé quelques choses, mais je n'ai pas encore trouvé un bon moyen de le faire.

Répondre

2

La solution la plus simple serait quelque chose comme ceci:

while (allTextLines.length) { 
    var line = allTextLines.shift().split(','); 
    lines.push([line[1], line[3], line[4]]); 
} 

Puisque vous voulez seulement le 2ème, 4ème et 5ème éléments à partir des données d'origine.

Cependant, vous pouvez le rendre un peu plus facile d'accès comme ceci:

lines.push({city: line[1], lat: line[3], lon: line[4]}); 

Cela se traduira par quelque chose comme:

lines[0] === {city: "New York City", lat: 40.71455, lon: -74.007124} 
lines[1] === {city: "Los Angeles city", lat: 34.05349, lon: -118.245323} 

qui signifie que vous pouvez simplement utiliser: lines[0].city.

Ou, si vous voulez juste les 3 "éléments" comme une chaîne:

lines.push(line[1] + ', ' + line[3] + ', ' + line[4]); 

en résultant:

lines[0] === "New York City, 40.71455, -74.007124"; 
lines[1] === "Los Angeles city, 34.05349, -118.245323"; 
+0

travaillé comme un charme. Je vous remercie. sera de retour dans 6 pour accepter – heisenberg

+0

@heisenberg: Excellent, merci! Avez-vous en effet besoin de la première suggestion que j'ai faite, ou l'un des 2 autres? – Cerbrus

+1

le premier est plus que suffisant parce que je ne montrerai jamais les données, je vais juste l'utiliser pour pointer les emplacements dans google maps – heisenberg