由于项目需求,需要在table内做成跟excel的功能一样,保存cell表格里面的计算表达式,点击聚焦显示表达式,失焦显示计算结果,奇葩的玩意儿针对这个需求封装了函数// 计算字符串输入的乘除, 参数二为最多保留多少位小数function MultiplicationDivision(str, num = 4) { if (!str) return “”; var regex = /(\d+(?:.\d+)?)([/])(\d+(?:.\d+)?)/; return str.replace(regex, function (matchStr) { return eval(matchStr).toFixed(num); });}// 计算字符串输入的加减, 参数二为最多保留多少位小数function AddSubtract(str, num = 4) { if (!str) return “”; var regex = /(\d+(?:.\d+)?)([+-])(\d+(?:.\d+)?)/; return str.replace(regex, function (matchStr) { return eval(matchStr).toFixed(num); });}// 递归计算字符串中的乘除计算式function calculateMultiplicationDivision(str) { if (str.indexOf("") !== -1 || str.indexOf("/") !== -1) { str = MultiplicationDivision(str); if (str.indexOf("") !== -1 || str.indexOf("/") !== -1) { console.log(‘乘除法1:’, str); return calculateMultiplicationDivision(str); } else { console.log(‘乘除法2:’, str); return str; } }}// 递归计算字符串中的加减计算式function calculateAddSubtract(str) { if (str.indexOf("+") !== -1 || str.indexOf("-") !== -1) { str = AddSubtract(str); if (str.indexOf("+") !== -1 || str.indexOf("-") !== -1) { console.log(‘加减法1:’, str); return calculateAddSubtract(str); } else { console.log(‘加减法2:’, str); return str; } }}// 计算输入的计算式字符串function calculate(str) { if (str.indexOf("") !== -1 || str.indexOf("/") !== -1) { str = calculateMultiplicationDivision(str); if (str.indexOf("+") !== -1 || str.indexOf("-") !== -1) { return calculateAddSubtract(str); } } else if (str.indexOf("+") !== -1 || str.indexOf("-") !== -1) { return calculateAddSubtract(str); }}注意:输出的式字符串,如需要数字请自行转换console.log(calculate(‘26+71-8/4’));// 输出console.log(calculate(‘26.5+71.4-8/4’));