let k1 = kpi1 + kpi2 + (kpi3 - kpi4) * kpi5; => {kpi1:1,kpi2:12,kpi3:2,kpi4:23,kpi5:78}
let k2 = kpi1 - (kpi2 * kpi3); => {kpi1:1,kpi2:12,kpi3:2,}
let k3 = kpi1 * kpi2 / kpi3; => {kpi1:1,kpi2:12,kpi3:2}如上:上面不同三个公式,举例而已,都是用户自己随机输入任意一种,无数种情况,但是只能有加减乘除括号组合,后面是每种需要替换公式中的的数据,怎么把对应的kpi,换成后面对象的数字。
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
用正则匹配一下就出来了
const k1 = 'kpi1 + kpi2 + (kpi3 - kpi4) * kpi5';const obj = {kpi1:1,kpi2:12,kpi3:2,kpi4:23,kpi5:78};let k2 = k1.replace(/kpi[0-9]+/g,function(){ return obj[arguments[0]] })console.log(k2) // '1 + 12 + (2 - 23) * 78'console.log(eval(k2)) // -1625
添加回答
举报
0/150
提交
取消