2016-07-03 28 views
1

Ich habe eine CSV-Reader-Direktive und lassen Sie uns Benutzer laden Sie eine CSV-Datei. Ich bemerkte, dass, wenn ich eine Datei mit Leerzeichen zwischen den Wörtern zum Beispiel hochladen:
abc
abc
abcentfernen Sie leere Zeilen beim Hochladen von csv-Dateien eckig

abc

abc

dies gezeigt wird. Ich möchte alle Leerzeilen löschen Nicht sicher, was zu tun ist. enter image description here

   var reader = new FileReader(); 
       reader.onload = function(e) { 
        var contents = e.target.result; 
        var rows = contents.split('\n');     

        // Check if the last row is empty. This works 
        if(rows[rows.length-1] ===''){ 
         rows.pop() 
} 
} 


    // this doesn't work for some reason. It doesn't detect the '' in the middle of the arrays. 

    for(var i=rows.length-1;i>0;i--){ 
     if(rows[i] === ''){ 
     rows.splice(i,1) 
     } 
    } 
+0

haben Sie wahrscheinlich auch ein Char (Zeile ist nicht leer). – K3N

Antwort

0

Von dem, was Sie haben gezeigt, es sieht aus wie Sie in der csvModel wenn jedes Element überprüfen wollen, ist ein leerer String, anstatt newValue

Etwas wie:

for(var i=0 ;i< $scope.csvModel.length; i++){  
    if (csvModel[i] == "") { 
     $scope.csvModel.splice(i,1); 
    } 
} 
+0

Kann nicht in der Mitte der vorwärts schauenden Schleife spleißen. Wird bei zukünftigen Iterationen deaktiviert. Kann es tun, wenn die Schleife umgekehrt – charlietfl

+0

für (var i = array.length-1; i> 0; i -) { wenn ([i] === "") { array.splice (i, 1) } } – Angular

+0

@charlietfl gehen so rückwärts? Es entfernt immer noch nicht die " – Angular

1

Try mit Array.prototype.filter()

var rows = contents.split('\n').filter(function(str){ 
    return str; 
}); 
+0

immer noch das Array mit leeren Strings innerhalb ... Wenn ich Zeilen [3] === '', gibt es falsch, aber wenn ich Zeilen [rows.length-1] === '', es gibt True zurück – Angular

+0

Erstellen Sie eine Demo in Plunker, die Problem reproduziert – charlietfl