2017-02-11 1 views
0

So habe ich ein kleines Skript mit Javascript geschrieben, wo es liest den Inhalt des Texteditors und führt arithmetische/andere Operationen nach dem, was darin geschrieben ist.Müssen zwei oder mehr Datensätze zuordnen und als Diagramm mit Javascript

Wie wenn ich "col0 + col1" eintippe, fügt es die zwei Spalten hinzu und zeigt ein Kreisdiagramm an. Aber das ist, was ich hart tun habe, "col0 + col1 + 2000", wo das 2000 zum Endergebnis hinzugefügt werden sollte.

if (formula.split(" ")[nCnt + 1] == "+") { 
    if (isNumeric(formula.split(" ")[nCnt])) { 
     numTo = formula.split(" ")[nCnt]; 
     sym = formula.split(" ")[nCnt + 1]; 
     sym += numTo; 

     // debugger; 
    } else { 
     sym = formula.split(" ")[nCnt + 1]; 
    } 

    secondaryData[secondaryData.length - 1] = secondaryData[value].map(function (num, idx) { 
     //if (isNumber(numTo)) { 
      num += sym; 
      res = num + secondaryData[formula.split(" ")[nCnt + 2]][idx]; 
      return res; 
     // } 
    }); 
} 

Meine Logik ist, Aufspalten allen Raum verwendet wird. Wenn im nächsten Index ein "+" steht, prüfen Sie, ob im aktuellen Index eine Zahl vorhanden ist, und speichern Sie den Wert in einer Variablen.

Dann mit Kartenfunktion, fügen Sie endlich alles, aber es führt eine Var + Integer-Sache nicht eine ganze Zahl + ganze Zahl eins. Ich möchte auch wissen, wie ich hinzufügen kann mehr Spalten wie "col0 + col1 + col2" usw.

+0

möchten Sie etwas wie Excel-Formelleiste mit Texteditor tun? – Kira

+0

yea sorta, ich habe das bereits in Tabellenform implementiert, ich muss nur in Graphical eine – Venky

+0

können Sie den Code hinter Ihrem 'isNumeric()' und 'isNumber()' Methoden zeigen? Meine Vermutung ist, dass Ihre Zahlen als Strings ausgegeben werden ("var + integer thing"). Sie könnten 'parseInt (num)' hilfreich finden. –

Antwort

0

Sie haben den ersten Schritt, der überprüft, ob der Wert eine Zahl ist, aber um Sie zu Mathe muss den Wert analysieren.

if (isNumeric(formula.split(" ")[nCnt])) { 
    numTo = parseFloat(formula.split(" ")[nCnt]); 
    sym = parseFloat(formula.split(" ")[nCnt + 1]); 
    sym += numTo; 
} else { 
    sym = formula.split(" ")[nCnt + 1]; 
} 

Wenn Sie wollen dies für alle Spalten laufen, zuerst müssen Sie Gruppe, um sie in einem Array, dann könnte man die Funktion für jeden Wert im Array ausgeführt:

const formulas = [col1, col2, col3, col4]; 
for (const formula of formulas) { 
    if (isNumeric(formula.split(" ")[nCnt])) { 
     numTo = parseFloat(formula.split(" ")[nCnt]); 
     sym = parseFloat(formula.split(" ")[nCnt + 1]); 
     sym += numTo; 
    } else { 
     sym = formula.split(" ")[nCnt + 1]; 
    } 
} 

Dieser Code läuft nicht ganz, weil nCnt nicht für mich definiert ist, aber hoffentlich zeigt es Ihnen in die richtige Richtung.

+0

nCnt fungiert als ein Index für eine "for" -Schleife, um alle Dinge aus dem Texteditor abrufen und überprüfen, ist es eine Zahl/Zeichen oder ist es col, wie wenn ich type col0 + col1, dann für das Aufspalten durch Leerzeichen überprüfe ich jedes Ding, bis der Index von nCnt – Venky

+0

den Wert analysierte, der für Sie arbeitet @Venky? Wenn Sie eine andere Lösung gefunden haben, können Sie diese als Antwort hier posten. Falls nicht, sollten Sie ein ausführbares Snippet veröffentlichen, damit andere Ihr Problem besser verstehen können. So wie es aussieht, kann ich Ihr Problem nicht reproduzieren, da ich Ihren Code nicht ausführen kann. –

+0

meine IsNumeric-Funktion tut parseInt, aber trotzdem habe ich es mit einem diff-Ansatz arbeiten, wird bald aktualisieren – Venky

Verwandte Themen