Javascript json文件中不同货币的总数

Javascript json文件中不同货币的总数,javascript,arrays,json,Javascript,Arrays,Json,当前正在处理一个需要以不同货币显示一组值的应用程序。这是应用程序的一部分,但我在这里提供的一切都应该足够了,因为这是我正在处理的主要部分。我有一个json文件,它被读入并存储在一个名为valuesArray的数组中,该数组包含所有信息,如金额、货币等。货币按从高到低的顺序排列,如下所示: EUR 500.00 USD 200.00 这是我创建的代码,但似乎我拥有的货币越多,它就越无效。我刚刚在函数上面放了一个数组声明,但就在这个函数上面,我做了所有json的工作,并将其添加到数组中$scope

当前正在处理一个需要以不同货币显示一组值的应用程序。这是应用程序的一部分,但我在这里提供的一切都应该足够了,因为这是我正在处理的主要部分。我有一个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]);
    }
$scope.valuesArray=[];
$scope.total=函数()
{
var eur_total=0;
var usd_总计=0;
if(typeof$scope.valuesArray!=“未定义”)
{   
变量长度=$scope.valuesArray.length;

对于(var i=0;i您可以尝试使用货币指数保存数组中的所有计算

$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);
$scope.valuesArray=[];
$scope.total=函数(){
var totalsArray=[];
if(typeof$scope.valuesArray!=“未定义”){
变量长度=$scope.valuesArray.length
对于(变量i=0;i
不是
$scope.valuesArray
数组吗?它应该是
var length=$scope.valuesArray.length
?我看不到你的数组。不妨给我们看一下你的
$scope
对象的所有相关部分。@PHPglue很抱歉,是的,我编辑了它。整理它时意外删除了一些东西。谢谢你指出它。I'v我只是在函数上面放了一个数组声明,但就在这个函数上面,我做了所有json的事情,并将其添加到数组中。
$scope.valuesArray
在这一点上有数据。我不确定这里的问题是什么?你需要执行自然排序吗?@PHPglue从json获取数据,它有货币和amount属性。分离货币并添加每种货币的总计。将不同的总计排序在一起,使最高的位于顶部,并用适当的货币标签显示。例如,
total[0]
是欧元,因此类似于
“EUR”+total[0]
=
EUR 300.00
这是一种简单的方法,但这意味着我需要知道每个索引中都有什么,并根据货币的数量用字符串标记,使行变长。
Math.max.apply(null,arrayHere)
将为您提供数组中的最高数字。我尝试过这个方法,但当我使用控制台时,它会给我NaN值。您有什么想法吗?抱歉,更新。使用这种方法,您可以拥有任意数量的货币。这会删除每个值的货币标题,不是吗?当它被推入数组时?使用保存的货币更新y、 它能解决你的问题吗?