求一个javascript写方法

E线时空 2012-03-08 03:00:01
1,我现在且一个公式

var gs1='(1)==(2)+(4)+(9)+(10)+(12)';
var gs2='(4)==(5)+(6)+(7)';
var gs3='(15)==(16)+(18)+(23)+(24)+(26)';
var gs4='(18)==(19)+(20)+(21)';

这四个公式都是字符串,

我写一方法,里有有两个参数,第一个参数是公式(gs1),第二是参数是数组(里面包括1,2,4,9,10,12这个数值)

函数功用实现 传进去值通过公式进行运算,返加正确还是错误。

function getValue(gs,arr)
{

//计算成功,返回正确

//否则返回错误

}

大家帮我想想,怎么写。
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jusfr 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jusfr 的回复:]...[/Quote]
两个问题,一个是需要考虑除法,另一个是添加策略参数,即当数组无法补齐表达式时的操作。
exp = exp.replace(/[\+\-\*\/]?\(\d+\)[\+\-\*\/]?/g, '');
改为下面方式
exp = exp.replace(/([\+\-\*]\(\d+\))|(\(\d+\)[\+\-\*])/g, '');
exp = exp.replace(/([\+\-\*\/]\(\d+\))|(\(\d+\)[\+\-\*\/])/g, '');
wosiwoxing 2012-03-08
  • 打赏
  • 举报
回复
hello[b][/b]
jusfr 2012-03-08
  • 打赏
  • 举报
回复

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


两个结果都为true,我的表达式学的不好,出疏漏还请坛友改进。
E线时空 2012-03-08
  • 打赏
  • 举报
回复
是的。
jusfr 2012-03-08
  • 打赏
  • 举报
回复
括号是占位符?里边数字是数组相应下标所在的元素的话倒容易,解析完字符串就基本完成了。
三石-gary 2012-03-08
  • 打赏
  • 举报
回复
怎么知道它运算对还是错啊

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧