2017-07-10 9 views
0

計算する計算式は、Portfolio P/E = Net Worth/Sum(Stock EPS * Shares Held)株式のP/E比率の計算方法は?

私はnetworthの値を持っていますが、私はEPS値を繰り返し処理することはできません。あなたはこれのためのいくつかの解決策をお勧めしますか?ありがとうございました!ここで がplunker

 <div> 
      <h3>P/E Ratio: {{getNetWorth())}} 
     </div> 

スクリプトです:

$http.get('data.json').then(function(response) { 
    $scope.stocksArray = []; 
    var indexes = []; 
    var epsindex = []; 
    var eps = {}; 
    $scope.eps = response.data.eps; 
+1

見ると私の友人 – infamoustrey

+0

この簡単な修正のように見えます。新しい関数 'getPortfolioPE()'を作成します。また、在庫オブジェクトをインスタンス化するときに、在庫EPSをそのオブジェクトのフィールドとして追加します。これにより、在庫配列を反復処理するときにアクセスしやすくなります。 – infamoustrey

+0

試したことがありますが、正確ではありません。あなたはplnkrを提供できますか? – HebleV

答えて

1

これは、任意の賞を獲得しませんが、hereは、問題のロングとショートです。

あなたのJSONファイルが奇妙に、このように構成されています。これは、あなたがコレクション全体をインスタンス化することなく、オブジェクトとしてそれを引っ張る聞かせ

-stock-name 
    --price:actual-price 
    --eps:actual-eps 

-price 
    --stock-name:stock-price 
    -eps 
    --stock-name:stock-eps 

それは、このような構造でなければなりません手動でしかし、私は与えられたデータで遊んだし、それは動作します。

キーは、私は、オブジェクトのプロパティにフィールドとして追加することができたの別々の配列としてEPSコレクションを追加することにより

$scope.eps = response.data.eps; 

mystock.eps = $scope.eps[key]; 

次の二つのラインです。

getPortfolioPE()は簡単な部分でした:

$scope.getPortfolioPE = function(){ 
      let temp = 0; 
      let total = 0; 
      for(let i = 0; i < $scope.stocksArray.length; i++){ 
      total += $scope.stocksArray[i].eps * $scope.stocksArray[i].shares 
      } 
      temp += $scope.getNetWorth()/ total; 
      return temp.toFixed(2); 

     } 
+0

こんにちはthatsクール。ありがとうございます。しかし、Portfolio P/E:NaNが最初に表示されているのはなぜですか。 – HebleV

+0

最初は株式がないからです。これは、 'getPortfolioPE()'の除数で0を意味します。これを簡単に修正するには、結果を返す前に 'if(total == 0){total == 0}'を追加します。株式。 – infamoustrey

+0

ここにその行が追加されました-https://plnkr.co/edit/oNfj75PJ9czUrA3JQo59?p = preview – infamoustrey

0

私はあなたの$ http.getは、株式の配列を返すべきだと思う、とPEの比率は、各配列要素のプロパティです。

したがって、あなたがコントローラでこのようなものが必要です:

$scope.stocks = response.data; 

をそして、あなたはテンプレートで使用NG-繰り返しが必要になる場合があり、このような何か:

<li ng-repeat="item in stocks"> 
    You PE is: {{item.pe}} 
</li> 
関連する問題