Bird
Raised Fist0
Angularframework~10 mins

filter operator for selection in Angular - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - filter operator for selection
Start Observable Stream
↓
Emit values over time
↓
Apply filter operator
↓
Check each value with condition
↓
Pass value
↓
Emit filtered values
↓
Subscribe
The filter operator checks each emitted value from an observable. It passes only those values that meet a condition to the subscriber.
Execution Sample
Angular
import { of } from 'rxjs';
import { filter } from 'rxjs/operators';

of(1, 2, 3, 4, 5).pipe(
  filter(x => x % 2 === 0)
).subscribe(console.log);
This code emits numbers 1 to 5, filters only even numbers, and logs them.
Execution Table
StepEmitted ValueCondition (x % 2 === 0)Pass or SkipOutput Emitted
111 % 2 === 0 -> falseSkip
222 % 2 === 0 -> truePass2
333 % 2 === 0 -> falseSkip
444 % 2 === 0 -> truePass4
555 % 2 === 0 -> falseSkip
💡 All values emitted and filtered; only even numbers passed to output.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5
Emitted Value-12345
Condition Result-falsetruefalsetruefalse
Output Emitted-24
Key Moments - 2 Insights
Why are some emitted values not passed to the output?
Values that do not satisfy the filter condition (false in 'Condition Result' column) are skipped and not emitted, as shown in rows 1, 3, and 5 of the execution table.
Does the filter operator change the order of values?
No, the filter operator only removes values that don't meet the condition but keeps the order of passed values, as seen in the output sequence 2 then 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output emitted at step 4?
A4
B3
CNo output
D2
💡 Hint
Check the 'Output Emitted' column at step 4 in the execution table.
At which step does the condition first evaluate to true?
AStep 1
BStep 3
CStep 2
DStep 5
💡 Hint
Look at the 'Condition (x % 2 === 0)' column in the execution table.
If the filter condition changed to x > 3, which output would be emitted at step 3?
A3
BNo output
C2
D4
💡 Hint
Refer to the variable_tracker and think about the condition x > 3 for value 3.
Concept Snapshot
filter operator in Angular RxJS:
- Takes emitted values from an observable
- Checks each value against a condition
- Passes only values that meet the condition
- Skips others silently
- Keeps order of passed values
- Used with .pipe(filter(condition))
Full Transcript
The filter operator in Angular RxJS listens to values emitted by an observable. For each value, it checks if the value meets a condition. If yes, it passes the value to the subscriber. If not, it skips it. For example, filtering even numbers from 1 to 5 results in only 2 and 4 being emitted. The order of values is preserved. This helps select only desired data from streams.

Practice

(1/5)
1. What does the filter operator do in Angular's RxJS streams?
easy
A. It delays the stream values by a set time.
B. It selects only the values that meet a condition.
C. It combines multiple streams into one.
D. It transforms each value into a new value.

Solution

  1. Step 1: Understand the purpose of filter

    The filter operator is used to pick values from a stream that satisfy a condition.
  2. Step 2: Compare with other operators

    Unlike map (which transforms) or merge (which combines), filter only selects values.
  3. Final Answer:

    It selects only the values that meet a condition. -> Option B
  4. Quick Check:

    filter = select values by condition [OK]
Hint: Filter picks values that return true in its function [OK]
Common Mistakes:
  • Confusing filter with map operator
  • Thinking filter changes values instead of selecting
  • Assuming filter combines streams
2. Which is the correct syntax to use the filter operator inside an RxJS pipe() in Angular?
easy
A. source$.pipe(filter(value => value > 10))
B. source$.filter(value => value > 10)
C. source$.pipe(map(value => value > 10))
D. source$.pipe(filter(value, value > 10))

Solution

  1. Step 1: Recall RxJS pipe syntax

    Operators like filter are used inside pipe as functions: pipe(filter(...)).
  2. Step 2: Check the filter function argument

    The filter function takes a callback returning true/false, e.g. value => value > 10.
  3. Final Answer:

    source$.pipe(filter(value => value > 10)) -> Option A
  4. Quick Check:

    filter inside pipe with callback arrow function [OK]
Hint: Use filter inside pipe with a function returning true/false [OK]
Common Mistakes:
  • Calling filter directly on observable without pipe
  • Using map instead of filter
  • Passing multiple arguments incorrectly to filter
3. Given this code snippet, what will be the output values logged?
import { of } from 'rxjs';
import { filter } from 'rxjs/operators';

of(1, 5, 10, 15).pipe(
  filter(x => x > 5)
).subscribe(console.log);
medium
A. 5, 10, 15
B. 1, 5
C. 10, 15
D. 1, 5, 10, 15

Solution

  1. Step 1: Identify the filter condition

    The filter condition is x > 5, so only values greater than 5 pass.
  2. Step 2: Check which values pass

    From the values 1, 5, 10, 15, only 10 and 15 are greater than 5.
  3. Final Answer:

    10, 15 -> Option C
  4. Quick Check:

    Values > 5 = 10, 15 [OK]
Hint: Filter keeps values where condition is true [OK]
Common Mistakes:
  • Including values equal to 5 (should be > 5)
  • Confusing filter with map output
  • Assuming all values pass filter
4. What is wrong with this Angular RxJS code using filter?
source$.pipe(
  filter(x => {
    if (x % 2 === 0) return true;
  })
).subscribe(console.log);
medium
A. The filter callback does not return false for odd numbers.
B. The filter operator is used outside pipe.
C. The subscribe method is missing.
D. The filter callback should return a number, not boolean.

Solution

  1. Step 1: Analyze the filter callback function

    The callback returns true for even numbers but returns undefined (no return) for odd numbers.
  2. Step 2: Understand filter expects boolean return

    Filter needs true or false; undefined is treated as false but is unclear and error-prone.
  3. Final Answer:

    The filter callback does not return false for odd numbers. -> Option A
  4. Quick Check:

    Filter callback must return true or false explicitly [OK]
Hint: Always return true or false in filter callback [OK]
Common Mistakes:
  • Missing explicit false return in filter
  • Using filter outside pipe
  • Confusing filter callback return types
5. You want to filter a stream of user objects to only those who are active and have age over 18. Which filter function correctly applies both conditions inside pipe()?
users$.pipe(
  filter( /* your code here */ )
).subscribe(activeAdults => console.log(activeAdults));
hard
A. user => user.isActive && user.age >= 18
B. user => user.isActive || user.age > 18
C. user => user.isActive && user.age > 18 && user.name
D. user => user.isActive && user.age > 18

Solution

  1. Step 1: Understand the conditions

    We want users who are active AND older than 18 (strictly greater).
  2. Step 2: Check each option's logic

    user => user.isActive && user.age > 18 uses && with user.isActive and user.age > 18, matching requirements exactly.
  3. Final Answer:

    user => user.isActive && user.age > 18 -> Option D
  4. Quick Check:

    Both conditions true with AND operator [OK]
Hint: Use && to combine multiple filter conditions [OK]
Common Mistakes:
  • Using || instead of && to combine conditions
  • Using >= instead of > if strict condition needed
  • Adding unrelated conditions like user.name
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard