js正则替换

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.7k
2 个回答

clipboard.png
是要这样吗?

用正则匹配一下就出来了

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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题