如何获取带有数字的字符串的结果以及之间的加/减/乘运算符
“ 1 + 5 + 6”,“ 5-8 + 6”,“ 1 + 5-8 + 9 + 4 + 6” ..等
答案 0 :(得分:0)
使用评估功能:
eval(expression)
console.log(eval("1+5-8+9+4+6"))
console.log(eval("1+5-8+9*6"))
答案 1 :(得分:0)
您可以像这样使用函数构造函数/ eval
if it is safe to do so:
const str = "1+5+6";
const res = (new Function("return "+str))();
console.log(res); // 12
或者,或者,如果您只在字符串中使用加号或减号,我建议您将字符串.split()
放入数组,然后使用.reduce()
对每个数字求和,例如所以:
const str = "1+5+6-1+2";
const res = str.split(/([+-]\d+)/).reduce((sum, n) => sum+ +n, 0);
console.log(res); // 13
答案 2 :(得分:0)
对于这样的简单方程式,您不需要邪恶(eval)或它的小兄弟Function构造函数。这些公式只需几个命令即可解析和评估。
[
"1+5+6",
"5-8+6", "1+5-8+9+4+6"
].forEach(formula => {
const result = formula.replace(/\s/g, "") // remove whitespace (just in case)
.split(/(?=[+-])/) // split the string into numbers with their respective sign
.map(Number) // convert them into actual numbers
.reduce((a,b) => a+b); // get the sum of the numbers (positive and negative)
console.log(formula, "=", result);
})
答案 3 :(得分:0)
以下代码段适用于所有 +/- 到任意位置。
const val1= "1+5+6";
const val2= "1+5+6-3-4+5+6-3-5";
const val3= "-1+5+6-1-3-8+1";
let lastSign = '';
console.log(LetsSum(val1));
console.log(LetsSum(val2));
console.log(LetsSum(val3));
function LetsSum(val) {
return val.split('').reduce((sum, ele, i) => {
if(isNaN(parseInt(val[i]))) {
lastSign = val[i];
} else {
sum = sum + +(lastSign+ele);
}
return sum;
}, 0);
}