var values = ["50.00024+40.04005+0.1", "0050.00024+040.04005+0.1"];
for (var i=0; i<values.length; i++) {
if(values[i].indexOf('+')>0 || values[i].indexOf('-')>0 || values[i].indexOf('*')>0 || values[i].indexOf('/')>0){
try{
var evaluated = eval(values[i]);
if(typeof evaluated === 'number'){
console.log(evaluated);
}
}catch (e){
console.error(e)
}
}
}
我有一些数学动作,可能是加号,减号或其他动作,我需要对此动作采取结果。我为此使用了eval。但是,如果我在005,75之前的数字为零,则eval不起作用。我该如何计算呢?
答案 0 :(得分:2)
您可以拆分字符串并解析数字,然后再将它们转换为字符串以使用eval
var values = ["50.00024+40.04005+0.1", "0050.00024+040.04005+0.1"];
values.forEach(function(value){
var newValue = value.split(/([\+\-\*\/])/).map(a => parseFloat(a) || a).join('');
var evaluated = eval(newValue);
console.log(value,"==", evaluated);
});
&#13;
答案 1 :(得分:2)
可以使用math.js之类的各种库来评估表达式:
console.log(math.eval("0050.00024+040.04005+0.1"))
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.16.5/math.min.js"></script>
&#13;
答案 2 :(得分:0)
你应该将它转换为float(例如parseFloat(“005.75”)= 5.75而不是评估字符串
答案 3 :(得分:-1)
根据问题代码,您可以使用.match()
获取数字值,.map()
和.reduce()
来添加值
var values = ["50.00024+40.04005+0.1", "0050.00024+040.04005+0.1"];
var res = values.map(function(n) {
return n.match(/[\d.]+/g).reduce(function(a, b) {
return a + Number(b)
}, 0)
});
console.log(res);