簡體   English   中英

Angular 2(Typescript)-RxJS可觀察-groupBy

[英]Angular 2 (Typescript) - RxJS observable - groupBy

json數據,

{
 "name": "Sam",
 "age":25,
 "schools":
 [
     {
       "country":"USA",
       "state":"IN",
       "city":"Fishers",
       "name":"school 1"
     },
     {
       "country":"USA",
       "state":"IN",
       "city":"Indianapolis",
       "name":"school 2"
     },
     {
       "country":"USA",
       "state":"CO",
       "city":"Denver",
       "name":"school 3"
     },
     {
        "country":"Canada",
       "state":"Ontario",
       "city":"Toronto",
       "name":"school 4"
     }
   ]
}

我需要對“國家”的學校數組進行分組,然后按“州”然后“城市”進行分組。

我的打字稿界面

interface Person{
name:string;
age:number;
schools: School[];
}

interface School{
country:string;
states: State[];
}

interface State{
state:string;
pairs: Pair[];
}

interface Pair{
city:string;
name:string;
}

我需要編寫一種服務方法來將json數據轉換為我的模型,以便按國家(地區)分組的學校以及按州(地區)分組的國家和按城市和名稱分組的州(地區)。

我的模型結構正確嗎? 如果是這樣,我如何根據我的需要分組。

我的服務方法應如下所示:

getPerson():Observable<Person>
{
      return this.http.get(url to get json data).groupBy(XYZ..).....
}

這不是幫助,而是一個請求...無論如何,這里是:

groupBy(array: any[], property: string) {
    return array.reduce((prev, next) => {
        // If the group doesn't exist, create it
        if(!prev[property]) { prev[property] = [next]; }
        // Else, we push it in
        else { prev[property].push(next); }
        // Mandatory return
        return prev;
    }, {});
}

現在您有了一個分組的對象。 您可以使用它,也可以將其轉換為數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM