Фильтровать массив в наблюдаемой - PullRequest
0 голосов
/ 10 октября 2018

Вот отредактированный пример из learnrxjs.Я хочу отфильтровать значения в массиве типов.Но это не так, как это работает: «Это условие всегда будет возвращать« true », поскольку типы« string [] »и« string »не имеют перекрытия.

Я новичок в rxjs и не могу понять, как фильтровать массив.Любые советы?Возможно ли это?

    const source = from([
         { name: 'Joe', age: 31, type: ['a', 'b'] }, 
         { name: 'Bob', age: 25, type: ['a'] }
    ]);
    //filter out people with type b
    const example = source.pipe(filter(person => person.type != 'a'));
    //output: "People with type b: Bob"
    const subscribe = example.subscribe(val => console.log(`Type a: ${val.name}`));

1 Ответ

0 голосов
/ 10 октября 2018

filter(), который вы применяете, принимает функцию с подписью T => boolean, означающую, что вам придется возвращать логическое значение true / false, чтобы она могла отфильтровывать элементы из потока.

Ваши элементы T имеют тип Object {name:string, age:number, type:array}, поэтому для фильтрации по значениям в массиве type необходимо использовать функцию-прототип Array.indexOf :

source.pipe(filter(person => person.type.indexOf('b') == -1) // filter out people who have type b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...