87,910
社区成员
发帖
与我相关
我的任务
分享
var formula = function (exp, args) {
if (exp.match(/^\(\d+\)==\(\d+\)([\+\-\*\/]\(\d+\))*$/)) {
for (var i = 0; i < args.length; i++) {
exp = exp.replace('(' + i + ')', args[i]);
}
exp = exp.replace(/[\+\-\*\/]?\(\d+\)[\+\-\*\/]?/g, '');
return eval('(' + exp + ')');
}
else {
throw {
name: 'Argument error',
message: 'Expression resolve failed'
}
}
};
try {
//var str = "(2)==(0)+(1)", args = [1, 2, 3];
var str = "(0)==(1)-(2)*(4)", args = [-62, 2, 4, 8, 16];
alert(formula(str, args));
}
catch (ex) {
alert(ex.message);
}