如何在javascript中对数组's值执行数学运算

How to perform math on an array's values in javascript?

本文关键字:执行数 运算 javascript 数组      更新时间:2023-09-26

我有一个值如下的数组:

2, *, 5

如何像这样执行这个字符串:

2 * 5

所以返回的结果是10?

最不安全的方法可能是这样做:

eval([2,"*",5].join(''))

但我永远不会建议那样做。"正确"的方法是编写某种解析器。

var ops = [2,"*",5]
var val = ops.shift();
while(ops.length > 0) {
    var item = ops.shift();
    switch(item) {
        case "*": val *= ops.shift();
        case "+": val += ops.shift();
        case "-": val -= ops.shift();
        case "/": val /= ops.shift();
    }
}

这基本上就像一个非常简单的计算器…但我还是不推荐这种方法。

你到底想干什么?也许有比数组更好的方法来模拟你要做的事情?

假设您可以使用顺序和括号处理自己的优先级,并且您可以使用eval,然后使用eval:

var str = "2,*,5";
var exp = str.split(",").join("");
var n = eval(exp);
alert(n);

同样,这假定您的初始字符串中没有空格。

你可以这样做:

var array = [2, '*', 5];
eval(array.join(''));

这是eval为数不多的有用之处之一,但是您可能不想给它任何东西。