【问题标题】:Convert string to expression in JavaScript在 JavaScript 中将字符串转换为表达式
【发布时间】:2015-10-21 06:06:03
【问题描述】:

我正在用 JavaScript 制作计算器,我想知道如何将字符串转换为表达式。

var numbers = "5+5+6";
numbers = +numbers;
 document.querySelector('.screen').innerHTML = numbers;

在变量之前添加 + 似乎不起作用。如果有人提供帮助,我将不胜感激。

【问题讨论】:

标签: javascript string expression


【解决方案1】:

您可以像这样使用eval() 函数:

var numbers = "5+5+6";
document.querySelector('.screen').innerHTML = eval(numbers);;

评估/执行 JavaScript 代码/表达式:

var x = 10;
var y = 20;
var a = eval("x * y") + "<br>";
var b = eval("2 + 2") + "<br>";
var c = eval("x + 17") + "<br>";

var res = a + b + c;

res 的结果是:

200
4
27

【讨论】:

    【解决方案2】:

    不使用 eval,这是作弊 - 你总是可以编写一个简单的计算器应用程序。

    首先,利用 String.split() 如下

    var numbers = "5+5+6";
    
    numbers.split("");
    // => ["5","+","5","+","6"]
    

    现在您需要做的就是弄清楚如何在保持操作顺序正确的同时对其进行评估。提示:它可能涉及树木。

    【讨论】:

    • 首先,说它可能涉及树并不是真正的暗示,其次它甚至不需要树。 OP 应该知道他需要将这个infix 表示法转换为postfix,然后使用后缀评估算法来执行计算。
    【解决方案3】:

    尝试使用String.prototype.match()Array.prototype.reduce()Number()。另见Chrome App: Doing maths from a string

    var numbers = "5+5+6";
    var number = numbers.match(/\d+|\+\d+|\-\d+/g)
      .reduce(function(a, b) {
        return Number(a) + Number(b)
      });
    document.querySelector(".screen").innerHTML = number;
    &lt;div class="screen"&gt;&lt;/div&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-24
      • 2017-01-18
      • 2010-12-12
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多