NEWS
Formel als inputstring
-
Hallo, ich suche nach einer Möglichkeit, wie mir ein User eine Formel übergeben kann (meinem Adapter)
Ich würde gerne eine frei definierbare Formel übergeben bekommen können, nicht vorgefertigte zur Auswahl stellen.
Ich habe schon von „eval()“ gehört, aber das soll wohl da nicht so sicher sein, zum anderen würde ich gerne folgendes bezwecken:
Ich habe intern quasi folgende Werte:
Ergebnis => [100]
AktuellerWert => [100]Dann soll eine formal übergeben werden können als bspw.
„= E[0] + (A[0]/A[1])/2“
Wie kann man dann den einzelnen Operanden die Werte zuweisen?
Jemand eine Idee?
-
@ben1983 sagte: eine Idee?
Schau mal auf Function() constructor. Wird auch für die Alias-Konvertierung verwendet.
-
ganz erschließt sich deine gewollte vorgehensweise noch nicht.
du schreibst Aktueller Wert [100]
in der Formel dann A[0] und A[1]
wo kommen dann diese werte her?
dann schreibst du was von ERgebnis und in der Formel dann E[0].
hast du eine vorgegebene menge an input parameter, die man optional erfassen kann und die dann in entsprechende platzhalter in der beliebig eingebbaren formel einsetzen kann?
Dein Beispiel ist nicht ganz ersichtlich.eval ist dann unsicher, wenn du beliebige Nutzer die du nicht kennst da dran lässt.
wenn es bei dir zuhause ist, sind die nutzer mit bösen absichten nicht so zahlreich.
aber ja, man kann da auch böse sachen eingeben.besser wäre es einen der vielen formelparsern zu nehmen:
https://www.npmjs.com/search?q=formula parser
da kannst mal durchschauen was deinen Anforderungen entspricht. -
Ich denke mal du suchst das hier: https://mathjs.org/docs/expressions/parsing.html
@paul53
Danke für den Link das hat mich schon die ganze zeit interessiert. -
@oliverio ich möchte den User freie Formeln lassen. Das [100] und [0] sollte nur ein beliebiges Element eines Arrays darstellen.
Aber das E sollte ein Platzhalter sein etc.
Ich schaue mal auf den Link -
@ben1983 sagte in Formel als inputstring:
freie Formeln
das hat bei solchen Dingen immer seine grenzen:
- nur grundrechenarten
- mathematische funktionen wie cos,sin,log,etc
- komplexere funktionen wie integrale,etc.
ein wenig muss man sich Gedanken machen was den frei bedeutet.
Richtig frei wäre man mit einer kompletten Programmiersprache. aber das geht sicherlich zu weit. Aber auch dafür gäbe es eine Lösung (https://www.npmjs.com/package/isolated-vm bzw der vorgänger https://www.npmjs.com/package/@n8n/vm2 welcher auch vom javascript.adapter verwendet wird) -
Je mehr ich darüber nachdenke um so mehr komme ich von dem Gedanken der wirklich frei vorgebbaren Formel ab.
Vielleicht ist das später wirklich nur nochmal als Adon zu sehen, aber in erster Linie erst einmal fest auswählbar mehr Formel in der Konfig besser.