Ionic 3 - Сортировать массив по другой трубе массива? - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужна ионная 3 труба, которая сортирует Array1 по идентификатору, используя OrderArray.

HTML:

< ng-container *ngFor="let item of items | sortBy : ‘id’ >

Array1:

[
  {“id”: 1,“title”: “Post-1”,“thumb”: “post1.png”},    
  {“id”: 2,“title”: “Post-2”,“thumb”: “post2.png”},    
  {“id”: 3,“title”: “Post-3”,“thumb”: “post3.png”},    
  {“id”: 4,“title”: “Post-4”,“thumb”: “post4.png”},    
  {“id”: 5,“title”: “Post-5”,“thumb”: “post5.png”}
]

OrderArray:

[3, 5, 2, 4, 1]

Мне нужен следующий результат:

[
  {“id”: 3,“title”: “Post-3”,“thumb”: “post3.png”},    
  {“id”: 5,“title”: “Post-5”,“thumb”: “post5.png”},    
  {“id”: 2,“title”: “Post-2”,“thumb”: “post2.png”},    
  {“id”: 4,“title”: “Post-4”,“thumb”: “post4.png”},    
  {“id”: 1,“title”: “Post-1”,“thumb”: “post1.png”},
]

Надеюсь, я найду кого-нибудь помочь, я много пробовал без успеха.

Спасибо

1 Ответ

0 голосов
/ 30 декабря 2018

Решение:

@Pipe({name: “sortBy”})
export class SortPipe {
transform(array: Array, args: string): Array {
// OrderArray
let sequence = [3, 5, 2, 4, 1];
if (array !== undefined) {
array.sort( function (a, b) {
var A = a[args], B = b[args];

  if (sequence.indexOf(A) < sequence.indexOf(B)) {
    return 1;
  } else {
    return -1;
  }
  
});
}
console.log(array);
return array;
}
}
...