2017-06-05 52 views
-1

我有一個API返回給我一個JSON,其中的音符範圍從1到5,我需要在變量中存儲一定數量的音符。在變量中保存相同音符的數量 - Angular 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)試圖列出只有數字,我可以嘗試一些東西來保存相同的音符在respecti ve變量,但console返回我undefined。那麼,我怎麼能得到這些相同的筆記,並以正確的方式將它們保存在變量中呢?

+0

請註明您所使用angular2和rxjs在你的標籤。 – WilomGfx

+0

@WilomGfx是的。我可以正常打印數據。我的問題是真的將變量保存在變量中。 –

回答

2

請在您的rxjs流中的.map()操作後嘗試以下代碼。您可能需要導入reduce運營商import 'ngrx/add/operators/reduce

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()'方法(或任何您需要它的位置)並將其分配給一個變量,它將與vanilla JavaScript一起工作以及rxjs。 (如果你接受我的答案,它也會很好,如果它對你有用:)) – schrej

+0

我明白了,謝謝! –