Сортировка массива наблюдаемых по значению объекта - PullRequest
1 голос
/ 16 апреля 2019

Я возвращаю массив Observables из firestore и хочу упорядочить их по индексу, созданному мной для объекта в базе данных.

Они хранятся в базе данных примерно так:

enter image description here

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

Я попытался сопоставить значения и использовать sort () для упорядочения по индексу, показанному в оде ниже, но все равно возвращает в случайном порядке.

Вот как я использовал карту, чтобы попытаться упорядочить по значению ключа индекса.

this.bedrooms$ = this.property$.pipe(
     flatMap((property: any) => this._property.getAllBedrooms(property.bedrooms, this.propertyId))
   );


   this.sortedBedroom$ = this.bedrooms$.pipe(
     map((room: any) => {
      return room.sort((a: any, b: any) =>
          b.index - a.index
       );
     }
     )
   );

1 Ответ

0 голосов
/ 16 апреля 2019

Ваша проблема, возможно, связана с этой строкой b.test - a.index вместо b.index - a.index.

Я бы предложил другое решение для этого, получив данные, отсортированные из пожарного хранилища с использованием AngularFirestore из @angular/fire:

this.afs.collection<Bedroom>('bedrooms', ref => ref.orderBy('index'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...