Сортировать наблюдаемый массив объектов - PullRequest
0 голосов
/ 25 февраля 2020

Есть ли у нас наблюдаемые операторы, чтобы сделать магию c упорядочения объектов на основе свойства. Как ниже.

Obs$ =[{ "id ":4 , "name": "sss"},{ "id ":48 , "name":"aaa"},{ "id ":14 , "name":"ccc"} ]

Чтобы отсортировать по имени, я могу сделать это, используя метод сортировки javascript с помощью функции сравнения. Было бы полезно, если бы у нас был какой-либо rx js способ добиться этого.

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Полагаю, этот код вам подойдет.
Пример Stackblitz доступен здесь .

import { of } from 'rxjs'; 
import { map } from 'rxjs/operators';

const sortByName = (a, b) => {
  const nameA = a.name.toLocaleUpperCase();
  const nameB = b.name.toLocaleUpperCase();
  return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;
}

const $observable = of([
  { "id ": 4,  "name": "sss" },
  { "id ": 48, "name": "aaa" },
  { "id ": 14, "name": "ccc" }
]);

$observable
  .pipe(map(data => data.sort(sortByName)))
  .subscribe(console.log);
0 голосов
/ 25 февраля 2020

Почему эта проблема помечена как rx js? То, что поле помечено знаком $, не является наблюдаемым. На самом деле у вас просто есть массив объектов. Вы можете отсортировать этот массив с помощью loda sh sortBy. https://lodash.com/docs/4.17.15#sortBy

...