RxJS - массив разделов объектов

Как мне разделить следующий массив, чтобы он был разделен между теми, кому меньше 30, и теми, кому 30 и выше.

Я думал, что следующий код сделает это, но, похоже, он просто возвращает массив, а не каждый элемент:

let ageArr = [
    { name: 'Ken', age: 28 },
    { name: 'Mary', age: 70 },
    { name: 'Kate', age: 12 },
    { name: 'David', age: 37 },
    { name: 'Laura', age: 42 },
    { name: 'Ian', age: 19 },
    { name: 'Peter', age: 21 },
    { name: 'Isobel', age: 55 },
    { name: 'Rebecca', age: 15 }
];

let [under, over] = Oversable.of(ageArr).partition(person => person.age < 30);

under.subscribe(a => console.log(a)); // [ { name: 'Ken', age: 28 }, { name: 'Kate', age: 12 }, { name: 'Ian', age: 19 }, { name: 'Peter', age: 21 }, { name: 'Rebecca', age: 15 } ]
over.subscribe(a => console.log(a)); // [ { name: 'Mary', age: 70 }, { name: 'David', age: 37 }, { name: 'Laura', age: 42 }, { name: 'Isobel', age: 55 } ]

Но, как указано выше, это, похоже, не работает. Есть идеи, как добиться того, чего я хочу?


person keldar    schedule 03.02.2017    source источник


Ответы (1)


Вам нужно использовать Observable.from

let ageArr = [
    { name: 'Ken', age: 28 },
    { name: 'Mary', age: 70 },
    { name: 'Kate', age: 12 },
    { name: 'David', age: 37 },
    { name: 'Laura', age: 42 },
    { name: 'Ian', age: 19 },
    { name: 'Peter', age: 21 },
    { name: 'Isobel', age: 55 },
    { name: 'Rebecca', age: 15 }
];

let [under, over] = Rx.Observable.from(ageArr).partition(person => person.age < 30);

under.subscribe(a => console.log("Under 30: " + a.name));
over.subscribe(a => console.log("Over 30: " + a.name));
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

person olsn    schedule 03.02.2017
comment
У тебя почти получилось ;-) - person olsn; 06.02.2017
comment
Ха - совершенно верно... всего один оператор. :) Спасибо еще раз! - person keldar; 06.02.2017