来自json文件的不同货币总数

时间:2016-09-28 20:56:11

标签: javascript arrays json

目前正在开发一个需要以不同货币显示一组值的应用程序。这是应用程序的一部分,但我在这里提供的所有内容都应该足够,因为这是我正在使用的主要部分。我有一个读入的json文件,它被存储到一个名为valuesArray的数组中,这个数组包含所有信息,例如金额,货币等。货币的排序最高,从最低到最低像这样显示:

EUR 500.00
USD 200.00

这是我创建的代码,但似乎这对我拥有的货币越多越有效。我刚刚在函数上面放了一个数组声明,但是在这个函数的上面是我做所有json的东西并将它添加到数组中。 $scope.valuesArray此时有数据。

$scope.valuesArray =[];
$scope.total = function()
    {
        var eur_total   = 0;
        var usd_total   = 0;

        if (typeof $scope.valuesArray != 'undefined')
        {   
            var length = $scope.valuesArray.length; 

            for (var i = 0; i<length ; i++)
            {   
                switch($scope.valuesArray[i].currency)
                {
                    case "USD":
                        usd_total += parseFloat($scope.valuesArray[i].value);
                        break;
                    default:
                        eur_total += parseFloat($scope.valuesArray[i].value);
                        break;
                }
            }
        }   
        var cost_total= [usd_total,eur_total];
        total.sort(function(a, b){return b-a});

        return format_to_decimal(total[0]) + "\x0A" + format_to_decimal(total[1]);
    }

在我的for循环中,我遍历数组中的每个数据,并在switch语句中将每种货币分解,并查找每种货币的总金额。

最后一点是暂时的,因为我无法弄清楚如何做到这一点的不同方式。我从最高位置对我所拥有的货币进行了总计。

我通过format_numeric_with_commas的函数调用返回函数,它以正确的货币格式给出了值,并显示了该值。将更新此内容并在我到达时添加该代码。但我已经使用索引作为一个粗略的逻辑来显示我想要摆脱它的东西。因此,在这种情况下,total[0]应为500.00total[1]应为200.00

除此之外,我希望能够显示每种货币的货币类型。就像上面的例子一样。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用货币索引保存数组中的所有计算。

$scope.valuesArray = [];
$scope.total = function () {
var totalsArray = [];
if (typeof $scope.valuesArray != 'undefined') {
    var length = $scope.valuesArray.length
    for (var i = 0; i < length; i++) {
        if (!totalsArray[$scope.valuesArray[i].currency]) {
            totalsArray[$scope.valuesArray[i].currency] = 0;
        }
        totalsArray[$scope.valuesArray[i].currency] += $scope.valuesArray[i].value;

    }
}
var cost_total = [];
for (var k in totalsArray) {
    cost_total.push(currency:k,value:totalsArray[k]);
}
cost_total.sort(function (a, b) {
    return b.value - a.value
});

return format_to_decimal(cost_total[0].value)+cost_total[0].currency + "\x0A" + format_to_decimal(cost_total[1].value);