javascript 数组的总和返回所有数字的字符串连接

PHP*_*ser 2 javascript arrays sum

我有一个由 ajax 获取的 php json_encode 对象。我想做的是对这个数组求和。这是我到目前为止所做的:

var json = $.parseJSON(data);
var tot = new Array();
for (var i = 0; i < json.length; ++i) {
   tot.push(json[i].final_total);
   $('table tbody').append("<tr><td>" + json[i].order_id + "</td><td>" + json[i].final_total + "</td></tr>");
}
Run Code Online (Sandbox Code Playgroud)

现在我想对这个数组求和。我试过这个:

var sum = tot.reduce(function(pv, cv) { return pv + cv; }, 0);
$("#total").html( sum );
Run Code Online (Sandbox Code Playgroud)

但结果是:

09.748.529.129.129.119.59.79.89.79.89.79.79.79.79.79.79719.248.59.79 ......
Run Code Online (Sandbox Code Playgroud)

我也试过:

myFunction(tot); 

function getSum(total, num) {
    return total + num;
}
function myFunction(item) {
    document.getElementById("total").innerHTML = item.reduce(getSum);
}
Run Code Online (Sandbox Code Playgroud)

但我在上面得到了相同的结果(数字彼此相邻)。

我也试过这个:

var tot = 0;
for (var i = 0; i < json.length; ++i) {
   tot += json[i].final_total);
   $('table tbody').append("<tr><td>" + json[i].order_id + "</td><td>" + json[i].final_total + "</td></tr>");
}
$("#total").html( tot );
Run Code Online (Sandbox Code Playgroud)

但我在上面得到了相同的结果(数字彼此相邻)。

那么在javascript中对数组求和的正确方法是什么?

ibr*_*rir 6

您必须使用parseInt(如果数字是Integers),parseFloat(如果它们是Floats)或Number(如果不确定)将它们明确解释为数字,例如:

sum = tot.reduce((a, n) => (a + Number(n)), 0);
Run Code Online (Sandbox Code Playgroud)