2017-06-05 1 views
-1

私には1から5までの音符のJSONを返すAPIがあります。変数に等量の音符を保存する必要があります。変数に等しい音符の数を保存する - 角2

例:

var n1 = 5; // Quantity of 10 notes with a value of 1 - [1,1,1,1,1] 
var n2 = 3; // Quantity of 3 notes with a value of 2 - [2,2,2] 
var n3 = 4; // Quantity of 4 notes with a value of 3 - [3,3,3,3] 

私のJSONは、このようなものになります。

[ 
    { 
    "author": "Lorem ipsum", 
    "note": "5", 
    "description": "Lorem ipsum dolor sit amet" 
    } 
] 

をそして、私はこのために使用するコードはこれです:私はのようなものを使用しようとした

numNotas() { 
    this.http.get(this.url).map(res => res.json()) 
    .subscribe(data => { 
     console.log(data); 
    }); 
} 

console.log(data.note)数字だけを列挙しようとすると、同じ音符を節約するために何かを試すことができますve変数がありますが、consoleは私にundefinedを返しました。では、どうすればこれらの同じノートを得て、正しい方法で変数に保存することができますか?

+0

あなたがタグにangular2とrxjsを使用していることを指定してください。 – WilomGfx

+0

@WilomGfxはい私はそうです。私はデータを正常に印刷することができます。私の問題は本当にメモを変数に保存しています。 –

答えて

2

rxjsストリームで.map()操作の後に次のコードを試してください。

import 'ngrx/add/operators/reducereduce演算子をインポートする必要がある場合があります。

const json = [ 
 
    { note: "5" }, 
 
    { note: "5" }, 
 
    { note: "5" }, 
 
    { note: "3" }, 
 
    { note: "3" }, 
 
] 
 

 
console.log(
 
    json 
 
    .map(obj => parseInt(obj.note)) 
 
    .reduce((acc, val) => { 
 
     acc[val]++ 
 
     return acc 
 
    }, { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0}) 
 
)

+0

完璧に作業しました!ちょっと別の質問ですが、別の関数でどのように変数を取り出すことができますか?まあ、私は平均の等級を計算するためにそれらを必要とするつもりです。 –

+0

'map()'と 'subscribe()'の間に置くと 'data.1'や' data [1] 'でアクセスできます。他のデータにもアクセスする必要がある場合は、rxjsストリームから取り出し、 'subscribe()'メソッド(またはそれが必要な場所)に入れ、変数に代入すると、バニラのjavascriptで動作します。 rxjsと同様です。 (それはあなたのために働く場合は、私の答えを受け入れてもいいです:)) – schrej

+0

私はそれをありがとう! –

関連する問題