Как посчитать элемент данных json ionic2

0

Я нахожу новую проблему, я хотел бы подсчитать @NAME чтобы установить массив FACET[] для show @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) и get value="..." = 0,1,2 (0==creator ,1==lang ,2==bnb) Когда я выбираю lang Я получаю 1, я использую это для FACET[1].FACET_VALUES, так что я получаю @KEY

Извините, что написал не так. Мой английский не очень хорош.

Теги:
ionic-framework
ionic2

2 ответа

1

ОК. есть только совет, который я хотел бы указать на вас. Вы говорите лучше со словами. Не английский, в частности, но больше об объяснении вашего текущего результата и желаемого результата. Я считаю, что это заставит вас изучать английский язык намного быстрее, чем вы сейчас делаете. (исходящий от нелокального динамика)

"Я хотел бы подсчитать @NAME, чтобы установить массив FACET [] для show @KEY"

Таким образом, с возвращенным JSON мы можем сделать пару вещей, которые не совсем понятны, сразу же глядя на ваш вопрос (сделал ли +1, поскольку я не считаю это плохого качества или не является хорошим вопросом),

Итак, есть 3 вещи, которые я должен уделить в своем посте

  • Подсчет количества, которое NAME происходит
  • Установка массива для FACET
  • Отображение КЛЮЧА на FACET, который, кажется, является конечной целью.

ОК

Подсчет количества, которое NAME происходит

Так что вы в основном уже получили этот ответ. Вы отправили этот код

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

Это означает, что у вас уже есть доступ к массиву FACET. Подсчет количества, которое НАЗВАНИЕ происходит, может быть выполнено либо путем создания цикла for, либо проверки того, является ли имя неопределенным (тем самым увеличивая число int) или рассчитывая на то, что NAME всегда определено, поэтому просто вызываем this.date.size() (если это задано правильно, конечно)

получить массив для FACET

это вы уже делаете, задавая значение this.date = data.json().RESULT.FACET. this.date ваш 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 = 2 и id = 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"}
         ]
      }
  ]
}

Этот код в основном такой же, как ваш код. И вот вопрос, который вы задаете сейчас, взяв код из моего ответа, как получить все идентификаторы или имена всех сотрудников. (получить все имена ключей объектов грани)

Теперь покажите вам в машинописном тексте

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

Я думаю, что этот псевдо-код заставит вас думать немного из коробки и найти ответ на свой вопрос. Если вы не можете подробно рассказать о том, что хотите, я буду рад помочь вам в любое время (даже в выходные) просто комментировать, и я отвечу, когда у меня будет время!

  • 0
    Пожалуйста, прочитайте мое объяснение ниже answer2, но я не знаю, чтобы установить значение параметра = "...", чтобы сохранить число 0,1,2,3 соответственно
0

@Ivaro18 спасибо за ваши ответы. Я хочу подсчитать сумму @NAME для установки массива для FACET и показ KEY на FACET[] который, кажется, является конечной целью.

Да, вы полностью знаете, что я имел в виду. Но я хочу, чтобы вывод был каждый @KEY этого FACET[]

Пример:

<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);
                        } );

      }

сверху иона-select - creator шоу, lang и bnb, я хочу, чтобы, когда я выбираю lang ion-option value="..." чтобы сохранить number "@NAME"

  • пример подсчета количества @NAME равен 3 и
  • когда я выбираю creator значение параметра ion = "..." << равно 0
  • когда я выбираю lang is ion-option value = "..." << is 1
  • когда я выбираю bnb, значение ионной опции = "..." << равно 2

и если я получаю value, я беру его для goToapply() для набора FACET[]

  • Например, я выбираю bnb я получаю value = 2 и console.log this.refine is show 2
  • возьмем (2), чтобы let p = this.refine, так что p = 2
  • возьмите p this.foundRepos=data.json().RESULT.FACET[p].FACET_VALUES; для шоу @KEY в ion-list

Когда я выбираю lang output,

> tha
> eng
  • 0
    @ Ivaro18 Но я не знаю, чтобы установить значение параметра = "...", чтобы сохранить число 0,1,2,3 соответственно
  • 0
    Aaaaaah хорошо мой плохой извините, ваш ответ ясен , но я только что прочитал над ним. Для привязки к значению попробуйте <ion-option [value]="date.size() - 1"> или <ion-option [attr.value]="date.size() -1"> (примечание: можно не проверяю, потому что я нахожусь на мобильном устройстве, возможно, вам придется заменить date.size() на date.length() но я не уверен
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню