Как я могу отделить функцию от строки, введенной пользователем, и построить эту функцию? - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь создать программу на JavaScript / HTML, где пользователь вводит строку, которая является математической функцией, такой как "cos (x) +3" или "x ^ 2-1", и программа JavaScript распознает этои строит его, используя p5.js.Я не уверен, как я могу решить эту проблему, используя JavaScript.Даже если мне нужно использовать внешнюю библиотеку JS, все в порядке, если только она решает проблему.Я не ищу решение всей проблемы, а вместо этого могу начать подходить к проблеме или использовать внешнюю библиотеку, которая может помочь.

Я посмотрел в Интернете, чтобы увидеть, как я могу решить эту проблему, но яничего не могу найти.Все, что я могу найти, это вещи на других языках программирования, таких как Python и Obj-C, но они не будут работать, потому что для программы жизненно важно, чтобы я использовал ту или иную форму JS.

1 Ответ

0 голосов
/ 16 июня 2019

Пожалуйста, посмотрите на приведенный ниже фрагмент.Я использую функцию javascript "eval", где вы можете буквально запускать произвольный код.

Использование eval должно быть сделано разумно.Как вы можете запустить буквально любой произвольный ввод.Возможно, вы можете применить строгий механизм очистки входных данных и т. Д. Это не полное решение, а отправная точка для создания чего-то более сложного.

Надеюсь, это поможет

function doMath(){
  let expr = document.forms[0].mathExpr.value
  document.getElementById("output").innerText = eval(expr);
}
<html>
<head>
<title>Math program Example</title>
</head>
<body>
<form>
<label>Please enter math expression:</label><input type="text" name="mathExpr" value="" />
<input type="button" name="result" value="Result" onclick="doMath();" />
</form>
<h2>Result: <span id="output"></span></h2>
</body>
</html>
...