【问题标题】:RxJS - partition array of objectsRxJS - 对象的分区数组
【发布时间】:2017-06-21 02:59:36
【问题描述】:

如何对以下数组进行分区,使其在 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 } ]

但如上所述,这似乎行不通。知道如何实现我想要的吗?

【问题讨论】:

    标签: rxjs rxjs5 partition angular2-observables


    【解决方案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));
    &lt;script src="https://unpkg.com/rxjs/bundles/Rx.min.js"&gt;&lt;/script&gt;

    【讨论】:

    • 你几乎拥有它;-)
    • 哈 - 非常正确......只有一名接线员。 :) 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2023-03-20
    • 2018-11-23
    • 2017-09-02
    相关资源
    最近更新 更多