簡體   English   中英

如何計算json數據項ionic2

[英]How to count json data item ionic2

我發現了一個新問題,我想算一下@NAME來設置數組@NAME FACET[]以顯示@KEY

Myjson

  "    RESULT":{
              "FACET":[
                { "@NAME" : "creator", 
                  "@COUNT" : "20",
                  "FACET_VALUES":[
                    {
                      "@KEY":"Book Company1",
                      "@VALUE":"13"},
                    {
                      "@KEY":"Book Company1์",
                      "@VALUE":"10"}],
                { "@NAME" : "lang", 
                  "@COUNT" : "70",
                  "FACET_VALUES":[
                    {
                      "@KEY":"tha",
                      "@VALUE":"33"},
                    {
                      "@KEY":"eng",
                      "@VALUE":"42"}
                   ],
                { "@NAME" : "bnb", 
                  "@COUNT" : "64",
                  "FACET_VALUES":[
                    {
                         .
                         .
                         .

              ] 

.

     optionsFn(): void {
            this.http.get("my_url")
                        .subscribe(data =>{
                                 this.date=data.json().RESULT.FACET; //get @NAME
                        },error=>{
err => console.error(err),
                           () => console.log('getRepos completed')
            );
        console.log(this.date);

            console.log(this.date);
            this.goToapply()
      }

      goToapply(){

       this.http.get("my_url")
                        .subscribe(data =>{
                                 this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
                        },error=>{
                            console.log(error);
                        } );

      }

..

    <ion-label>Filterr</ion-label>
          <ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
            <ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
          </ion-select>
<ion-list>          
          <ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
            <h3> {{ item[@KEY"] }}</h3>
          </ion-item>
        </ion-list>

這個value="..."我想把它保留為string以供使用,但zi知道這個想法。

示例:count @NAME = 3 (creator,lang,bnb) ,並獲得value="..." = 0,1,2 (0==creator ,1==lang ,2==bnb)當我選擇lang我得到1 ,我用它來FACET[1].FACET_VALUES ,所以我得到@KEY

抱歉寫錯了。 我的英語不是很好。

好的。 我只想向您指出一個提示。 你應該會用詞好一點。 不是特別是英語,而是更多關於解釋您當前的結果和您想要的結果。 我相信這會迫使你以比目前更快的速度學習英語。 (來自非母語人士)

“我想計數@NAME 來設置數組 FACET[] 以顯示 @KEY”

因此,使用返回的 JSON,我們可以做一些事情,但從立即查看您的問題時並不能很清楚(做了一個 +1,因為我不認為它的質量很差或不是一個好問題)。

所以我應該在我的帖子中介紹 3 件事

  • 計算NAME出現的數量
  • 為 FACET 設置數組
  • 顯示每個 FACET 的 KEY,這似乎是最終目標。

好的

計算NAME出現的數量

所以你基本上已經得到了這個答案。 您提交了此代碼

this.http.get("my_url") .subscribe(data =>{ this.date=data.json().RESULT.FACET; //get @NAME });

這意味着您已經可以訪問 FACET 數組。 計數該NAME發生可以或者通過for循環創建和檢查,如果名稱沒有未定義的(因而遞增一個int)上NAME總是被定義的事實或計數,從而只調用完成的量this.date.size() (當然,如果 this.date 設置正確)

獲取 FACET 的數組

這個,你已經通過分配this.date = data.json().RESULT.FACET 您的this.date現在包含一個保存 FACET 對象的數組。 就像這樣看:JSON(帶有在 JSON 中不可能的注釋,但僅用於演示目的)=

{ FACET: // declare the main object, called FACET 
  [     // declaring the FACET as an Array ([] is for creating a list)
    {id: 2} //initializing a child of the FACET array
    ,{id: 3} //initializing the second FACET child.
  ]
} 

所以,這個偽(不現實的)JSON 包含 2 個對象, id = 2id = 3

好的,現在你應該對 JSON 有點了解了,讓我們來看看你的代碼是什么樣子的(考慮到一個有多個辦公室和每個辦公室多個員工的 Businnes)

{
  OFFICES" : [
       {
         "id" : "1",
         "location" : "New York",
         "employees" : [
           {"id" : "1", "fullName" : "Jon Skeet"},
           {"id" : "2", "fullName" : "Random Stranger"}
         ]
     },
     {
        "id" : "2",
        "location" : "Amsterdam",
        "employees" : [
            {"id" : "1", "fullName" : "Ivaro18"},
            {"id" : "2", "fullName" : "Some-Random Stranger"}
         ]
      }
  ]
}

此代碼與您的代碼基本相同。 你現在問的問題是,從我的答案中獲取代碼,如何獲取所有員工的所有 ID 或姓名。 (獲取 facet 對象的鍵的所有名稱)

現在讓我們用打字稿告訴你

someFunction() {
   this.http.get('someUrl').map(response => {
      console.log(JSON.stringify(response.json())); // check what you actually retrieve

      let decoded = response.json();
      for(let office of decoded.OFFICE) {
         console.log(office.location);

         for(let employee of office.employees) {
            console.log(employee.fullName);
         } 
      }
   });
}

該程序的預期輸出

> New York
> Jon Skeet
> Random Stranger
> Amsterdam
> Ivaro18
> Some-Random Stranger

我認為這個偽代碼會讓你思考一些開箱即用的問題並找到你問題的答案。 如果您不能詳細說明您想要的輸出內容,我很樂意隨時(甚至是周末)為您提供幫助,只需發表評論,我會在有時間的時候回復您!

@Ivaro18 感謝您的回答。 我想計算@NAME@NAME設置數組並顯示每個FACET[]的 KEY 的數量,這似乎是最終目標。

是的,你完全明白我的意思。 但我希望輸出是該FACET[]每個@KEY

例子 :

<ion-select [(ngModel)]="refine" (ionChange)="optionsFn();">
            <ion-option value="..." *ngFor="let item of date">{{item["@NAME"]}},({{item["@COUNT"]}})</ion-option>
          </ion-select>
<ion-list>          
          <ion-item *ngFor="let item of foundRepos" (click)="itemClicked($event,item)">
            <h3> {{ item[@KEY"] }}</h3>
          </ion-item>
        </ion-list>

.

 optionsFn(): void {
            this.http.get("my_url")
                        .subscribe(data =>{
                                 this.date=data.json().RESULT.FACET; //get @NAME
                        },error=>{
err => console.error(err),
                           () => console.log('getRepos completed')
            );
        console.log(this.date);

            console.log(this.date);
            this.goToapply()
      }

      goToapply(){

       this.http.get("my_url")
                        .subscribe(data =>{
                                 this.foundRepos=data.json().RESULT.FACET[0,1,2,3.4......].FACET_VALUES; ///get @KEY
                        },error=>{
                            console.log(error);
                        } );

      }

從上面 ion-select 是 show creatorlangbnb ,我想如果當我選擇lang ion-option value="..."來保留"@NAME" number

  • @NAME示例計數量為 3 和
  • 當我選擇creator是 ion-option value="..." << is 0
  • 當我選擇lang is ion-option value="..." << is 1
  • 當我選擇bnb是 ion-option value="..." << is 2

如果我得到了value ,我會把它帶到goToapply()來設置goToapply() FACET[]

  • 例如我選擇bnb我得到值 =2 和console.log this.refine是顯示2
  • 把它(2) let p = this.refine ,這樣p = 2
  • 將 p 帶到this.foundRepos=data.json().RESULT.FACET[p].FACET_VALUES; 用於在ion-list顯示@KEY

當我選擇lang輸出時

> tha
> eng

暫無
暫無

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

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