【问题标题】:jQuery formula parser?jQuery公式解析器?
【发布时间】:2011-06-18 21:43:19
【问题描述】:

我正在尝试使用 jQuery 构建一个数据透视表 javascript 应用程序,并且我想让用户定义自己的计算字段(就像在 Excel 上看到的那样!)。

所以,如果 f1, f2, f3 是表格的列,用户可以定义一个自定义字段为 c1 = (f1 + f2)/f3 只需键入(就像我可以使用 Excel 一样)。

我想我需要一个解析器,以确保:

  • f1、f2、f3 是有效的表字段(而 f4 不是)
  • 没有无效符号。

有什么建议(即用型插件、示例...?)?

谢谢

【问题讨论】:

  • 只需使用 Javascript 对象来设计表格的列,因为它们是第一次键入的。然后你可以只查询你的对象的列,如果值未定义,则该列不存在。

标签: jquery parsing pivot-table


【解决方案1】:

您可以在一定程度上使用 javascript 的 eval() 函数。你只需要用它们的值替换变量,这很容易。

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

输出:

  8

【讨论】:

    【解决方案2】:

    从这里的代码开始: 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;
    

    然后你可以设置你的变量并像这样使用它们:(只支持f0f9):

    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/

    转到小提琴的底部来玩它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多