如何使用jQuery对这样的JSON数组元素进行求和:
{"formulagram":"470+6,7+33,5+236,2+4,5+0,3"}
,结果应为:
总计: 751,2
使用逗号标识,+是标记符。
谢谢
答案 0 :(得分:1)
尝试这个:
var objForm = {
formulagram:"470+6,7+33,5+236,2+4,5+0,3"
};
var str= objForm.formulagram;
str = str.split(',').join('.').split('+');
var total = 0;
$.each(str,function() {
total += parseFloat(this);
});
total = Math.round(total * 100) / 100;
total = total.toString().replace('.',',');
console.log(total);
我在下面创建了一个演示:
var objForm = {
formulagram: "470+6,7+33,5+236,2+4,5+0,3"
};
var str = objForm.formulagram;
str = str.split(',').join('.');
$('#splitbyComma').html(str);
str = str.split('+');
var total = 0;
$.each(str, function() {
total += parseFloat(this);
});
total = Math.round(total * 100) / 100;
total = total.toString().replace('.',',');
$('#result').html(total);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Replace Comma with dot (.)</p>
<p id="splitbyComma"></p>
<p><strong>Total:</strong>
</p>
<p id="result"></p>
&#13;
答案 1 :(得分:0)
你必须更换角色&#39;,&#39;为&#39;。&#39;表示浮动数字。然后你可以使用eval。
代码:
var str= "470+6.7+33.5+236.2+4.5+0.3";
var sum = parseFloat(eval(str));
您必须小心,因为使用eval会有风险。阅读此帖子中的更多内容Why is using the JavaScript eval function a bad idea?
答案 2 :(得分:0)
这是一个更加迂回但自动化的方式:
var formulaObject = JSON.parse({"formulagram":"470+6,7+33,5+236,2+4,5+0,3"})
var formulaString = formulaObject.formulagram
var formulaPoint = formulaString.replace(',', '.')
var formulaArray = formulaPoint.split('+')
var formulaSum = formulaArray.reduce(function(prev, cur) {
return prev + parseFloat(cur)
}, 0)