2017-01-26 9 views
3

У меня есть служба, которая возвращает карту объекта, которая затем используется в Angular's ngFor, которая принимает только массивы. Итак, я использую оператор map с _toArray lodash для преобразования данных в массив.RxJS5 - Оператор для преобразования карты объекта в массив

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

данных:

{ 0 : {data : 'lorem'}, 1 : {data : 'lorem'}, 2 : {data : 'lorem'} } 

Текущая:

this.http 
    .get('/api') 
    .map(data => _.toArray(data)); 

возможно?

this.http 
    .get('/api') 
    .mapToArray(); 
+0

Вы можете использовать Угловые встроенный 'filter' для этого. Затем вам нужно импортировать lodash только один раз, где будет определен ваш фильтр. https://docs.angularjs.org/guide/filter – aarosil

ответ

6

Вы должны быть в состоянии делать то, что вы хотите с RxJS map оператора игровых и просто методом Object.keys().

Rx.Observable 
 
    .of({ 
 
    0: { data : 'lorem' }, 
 
    1: { data : 'lorem' }, 
 
    2: { data : 'lorem' } 
 
    }) 
 
    .map(data => Object.keys(data).map(k => data[k])) 
 
    .subscribe(data => console.log(data));
<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.min.js"></script>

+0

Это не обязательно выводит массив с элементами в правильном порядке. – cartant

+0

Я пропустил, где op хотел массив в определенном порядке? Причина, по которой я ответила, подобна, но другая - именно по этой причине. Не нужно кодировать спецификации, которых просто нет. –

+0

Хорошая точка. Справедливо. – cartant

 Смежные вопросы

  • Нет связанных вопросов^_^