我有一个具有以下值的数组:

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();
    }
}


从本质上讲,它就像一个非常简单的计算器一样工作...但是我仍然不能真正推荐这种方法。

您到底想做什么?也许除了数组之外,还有更好的方法来建模您正在尝试做的事情?

关于javascript - 如何在JavaScript中对数组的值执行数学运算?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7136174/

10-09 19:46