gpt4 book ai didi

javascript - 规避 JavaScript 中的运算符优先级

转载 作者:行者123 更新时间:2023-12-02 18:47:09 26 4
gpt4 key购买 nike

假设我有一个像这样的字符串:'1 + 2 + 3 * 4'

是否可以从左到右(顺序?线性?)计算它,使其等于 24 而 15?

我事先不知道该字符串是什么,所以它可能是“1 + 2”,也可能是“1 + 7 * 11 - 18/32 * 155”

最佳答案

假设您从数字开始,并且数字和运算符之间仅(且始终)出现空格,您可以拆分字符串并将其传递给已定义运算符的对象

var num_eval = (function () {
var ops = {
'+': function (x, y) {return x + y},
'-': function (x, y) {return x - y},
'*': function (x, y) {return x * y},
'/': function (x, y) {return x / y}
// etc..
};
return function (str_command) {
var str_arr = str_command.split(' '),
lhs = +str_arr[0], i = 1; // + to cast Number
for (; i < str_arr.length; i = i + 2) {
lhs = ops[str_arr[i]](lhs, +str_arr[i+1]); // + to cast Number
}
return lhs;
};
}());

num_eval('1 + 2 + 3 * 4'); // 24
num_eval('1 + 7 * 11 - 18 / 32 * 155'); // 339.0625
<小时/>

如果您想更轻松地处理字符串格式,那么您可以使用以下正则表达式。

str_arr = str_command.match(/([\+\-\*\/]|[\d]*[\.e]?[\d]+)/g)

循环仍然假设一个奇数长度的数组,以数字(作为字符串)开头。

关于javascript - 规避 JavaScript 中的运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com