2016-09-28 3 views
-1

現在、さまざまな通貨で一連の値を表示する必要があるアプリケーションで作業しています。これはアプリケーションの一部ですが、私がここで提供するすべては、これが私が作業している主要なセクションであるので十分であるはずです。私は読み込まれたjsonファイルを持っていて、配列はvaluesArrayという配列に格納されています。この配列は金額、通貨などのすべての情報を持っています。 :jsonファイルからの異なる通貨の合計

EUR 500.00 
USD 200.00 

これは私が作成したコードですが、これは私が持っているより多くの通貨効果的ではないであろうように思えます。私は関数の上に配列宣言を置いただけですが、この関数のすぐ上には、すべてのjsonの内容を配列に追加します。 $scope.valuesArrayには、この時点でデータがあります。私のforループで

$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]); 
    } 

私は、アレイ内のすべての単一のデータを通過し、switchステートメント内の各通貨を打破し、各通貨の総量を見つけます。

私はそれを行う方法の別の方法を理解できなかったので、最後のビットは一時的なものです。私は、私が持っている通貨の合計を一番上から並べ替えます。

私はformat_numeric_with_commasの関数呼び出しで関数を返します。format_numeric_with_commasは適切な通貨形式の値を返し、値を表示します。これを更新し、そのコードを追加します。しかし、私は索引を、私がそれから抜け出したいものを示すための大まかな論理として使用してきました。この場合、total[0]500.00で、total[1]200.00である必要があります。

この上に、それぞれの通貨タイプを表示したいと考えています。上記の例のように。

+0

'$ scope.valuesArray'は配列ではありませんか?それは 'var length = $ scope.valuesArray.length'でしょうか?私はあなたの配列を見ることができません。 '$ scope'オブジェクトのすべての適切な部分を表示することもできます。 – PHPglue

+0

@PHPglue申し訳ありません。私はそれを編集しました。誤って整理するといくつか削除されます。それを指摘してくれてありがとう。私は関数の上に配列宣言を置いただけですが、この関数のすぐ上には、すべてのjsonの内容を配列に追加します。 '$ scope.valuesArray'はこの時点でデータを持っています。 –

+0

私は本当に質問がここにあるのか分からないのですか? Natural Sortを実行する必要がありますか? – PHPglue

答えて

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); 
+0

私はこれを試しましたが、私はコンソールを使用するときに値のNaNを与えています。 –

+0

アイデアはありますか? –

+0

申し訳ありません。このアプローチでは、必要な数の通貨を持つことができます。 –

関連する問題