jQuery парсер формул? - PullRequest
       7

jQuery парсер формул?

2 голосов
/ 01 февраля 2011

Я пытаюсь создать приложение javascript для сводной таблицы с помощью jQuery и хочу, чтобы пользователь определял свои собственные вычисляемые поля (как в Excel!)

Таким образом, если f1, f2, f3 являются столбцами таблицы, пользователи могут определить настраиваемое поле как c1 = (f1 + f2) / f3 просто набрав (как я могу сделать с Excel).

Я думаю, мне нужен парсер, чтобы убедиться, что:

  • f1, f2, f3 - допустимые поля таблицы (в то время как f4 нет)
  • нет недопустимых символов.

Есть предложения (готовые плагины, примеры, ...?)?

Спасибо

Ответы [ 3 ]

0 голосов
/ 01 февраля 2011
0 голосов
/ 01 февраля 2011

Начните с кода отсюда: http://jsfromhell.com/classes/math-processor

добавить что-то вроде:

    if(e.length >= 2 && e[0] == 'f') {
        i = "0123456789".indexOf(e[1]);
        if(i >= 0) {
            e.splice(0,2);
            return [_.get_var(i), , , 0];
        }
    }

после

p.v = function(e){
    var i, j, l, _ = this;

Затем вы можете установить переменные и использовать их следующим образом: (поддерживает только от f0 до f9):

var mp = new MathProcessor();
var myVars = {3:55}; // your vars -- f3 = 55
mp.get_var = function(x) {return myVars[x];}
alert(mp.parse('4+f3*2'));

См. Этот пример по адресу: http://jsfiddle.net/amirshim/mcJe4/

Идите к нижней части скрипки, чтобы поиграть с ней.

0 голосов
/ 01 февраля 2011

Вы можете использовать функцию JavaScript eval() в определенной степени.Вам нужно только заменить переменные их значениями, что довольно просто.

eval("f1 + f2 / f3".replace("f1","6").replace("f2","8").replace("f3","4"));

Выходы:

  8
...