Я разрабатываю приложение с Ionic и Firebase, которое должно сравнить массив, созданный пользователем, с массивом в Firebase, чтобы отфильтровать список продуктов.
Существует список, содержащий 3 элемента (A,B и C), которые могут быть переупорядочены пользователем.Этот порядок следует использовать для фильтрации товаров из другого списка, имеющих характеристики A, B и C, с оценкой и отсортированных в порядке убывания.
Поэтому мне нужно сравнить сортировку, выполненную пользователем, и толькорезультат в продуктах с той же сортировкой.Например, если пользователь сортирует B, A, C, в результате будут отображаться только продукты с таким же порядком сортировки.Это означает, что продукт, имеющий A = 50, B = 100, C = 30, будет иметь массив desOrder = [B, A, C]
.
. Firebase выглядит примерно так:
- XMnL8KVlJXXXXXXXXXX
name: "Product 1"
- desOrder
0: "B"
1: "A"
2: "C"
- XMnX2KVlJXXXXXXXXXX
name: "Product 2"
- desOrder
0: "C"
1: "B"
2: "A"
- XnP33RRmNXXXXXXXXXX
name: "Product 3"
- desOrder
0: "A"
1: "C"
2: "B"
search.html
<ion-list no-lines>
<ion-item-group class="reordenar" reorder="true" (ionItemReorder)="reorderItem($event)">
<ion-item *ngFor="let item of orderItems">
{{ item }}
</ion-item>
</ion-item-group>
</ion-list>
search.ts
orderItems: any;
constructor(public navCtrl: NavController, public navParams: NavParams) {
this.orderItems = ["A", "B", "C"];
}
reorderItem(indexes){
this.orderItems = reorderArray(this.orderItems, indexes);
console.log(this.orderItems); // can be, e.g., ["B", "C", "A"]
}
searchTo(){
this.navCtrl.push(ListPage, {this.orderItems});
}
Сейчас я возвращаю все товары без фильтра:
list.ts
products: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public listservice: ListService) {
this.getaData();
}
getaData(){
this.products = this.listservice.getAll();
}
list-service.ts
getAll(){
return this.db.list('product/').snapshotChanges()
.map(changes =>{
return changes.map(c=> {
const data = c.payload.val();
const id = c.payload.key;
return { id, ...data };;
});
})
}
Важным является заказ, так как все продукты имеют 3 характеристики и их оценки (это не то же самое для этот вопрос )