2016-07-29 3 views
0

In meiner Express-Route nehme ich eine Menge Einträge aus einer MySQL-Datenbank. Diese Einträge sind Wörter und haben zugehörige Zeilennummern, so dass alle Wörter in derselben Zeile vor einem Zeilenumbruch zusammen gedruckt werden müssen.Loops und Variablen in Express/doT.js, um herauszufinden, wie MySQL-Ergebnisse richtig gedruckt werden können

word | section 
---------------- 
Lorem |  1  
ipsum |  1 
dolor |  1 
sit |  2 
amet |  2 

Mit doT.js als meine Template-Engine, ich brauche diese auszudrucken als

Lorem ipsum dolor 
sit amet 

I Schleife durch das Array von MySQL Ergebnissen und das Wort ausdrucken. Aber ich kann mir nicht vorstellen, wie man die Zeilennummer des aktuellen Index mit der des vorherigen Index vergleicht. Meine erste Neigung besteht darin, eine Variable für die aktuelle Zeile zu speichern und sie mit der vorherigen Zeile zu vergleichen. Wenn sie unterschiedlich sind, kann ich eine <br> drucken. Aber ich habe Probleme herauszufinden, wie es geht.

Muss ich eine Hilfsmethode verwenden (und wenn ja, kann jemand ein gutes Tutorial verlinken)? Oder gibt es einfachere Möglichkeiten, dies zu erreichen?

Antwort

0

Assusming Sie dieses Array haben:

var arr = [ { "word":"lorem", "section": "1"}, { "word":"ipsum", "section": "1"}, { "word":"dolor", "section": "1"}, { "word":"sit", "section": "2"}, { "word":"amet", "section": "2"} ] 

Sie können es in dieser Funktion versuchen:

function printWordsOnLines(arr) { 
    var currentLine = 1; 
    var output = ""; 
    arr.forEach(function(line) { 
     if(currentLine<line.section) { 
      currentLine=parseInt(line.section); 
      output+="<br>"; 
     } 
    output+=line.word + " "; 
    }) 
    return output; 
} 

, die diese Ausgabe haben wird:

"lorem ipsum dolor <br>sit amet " 

Sie können weiter Passen Sie dies genau an Ihre Bedürfnisse an.