Keep only the array elements that match a test.

filter-values `filter` returns a new array containing only elements whose callback returns `true`.

Filtering Values

minimum
filter_values.js
Replay: real traced execution (multi-file project)
const minimum = 4;
const scores = [1, 3, 5, 7, 9];
const passing = scores.filter((score) => score >= minimum);

console.log("minimum=" + minimum);
console.log("passing=" + passing.join(","));
const minimum = 2;
const scores = [1, 3, 5, 7, 9];
const passing = scores.filter((score) => score >= minimum);

console.log("minimum=" + minimum);
console.log("passing=" + passing.join(","));
const minimum = 6;
const scores = [1, 3, 5, 7, 9];
const passing = scores.filter((score) => score >= minimum);

console.log("minimum=" + minimum);
console.log("passing=" + passing.join(","));
  1. minimum ← 4, scores ← 1,3,5,7,9, passing ← 5,7,9

    1const minimum→ 4 = 4; //@minimum=2, 62const scores→ 1,3,5,7,9 = [1, 3, 5, 7, 9];3const passing→ 5,7,9 = scores1,3,5,7,9.filter((score) => score >= minimum);45console.log("minimum=" + minimum4);6console.log("passing=" + passing5,7,9.join(","));
    outputminimum=4
    passing=5,7,9
  1. minimum ← 2, scores ← 1,3,5,7,9, passing ← 3,5,7,9

    1const minimum→ 2 = 2;2const scores→ 1,3,5,7,9 = [1, 3, 5, 7, 9];3const passing→ 3,5,7,9 = scores1,3,5,7,9.filter((score) => score >= minimum);45console.log("minimum=" + minimum2);6console.log("passing=" + passing3,5,7,9.join(","));
    outputminimum=2
    passing=3,5,7,9
  1. minimum ← 6, scores ← 1,3,5,7,9, passing ← 7,9

    1const minimum→ 6 = 6;2const scores→ 1,3,5,7,9 = [1, 3, 5, 7, 9];3const passing→ 7,9 = scores1,3,5,7,9.filter((score) => score >= minimum);45console.log("minimum=" + minimum6);6console.log("passing=" + passing7,9.join(","));
    outputminimum=6
    passing=7,9

Keep or Drop

  1. Start with scores: [1, 3, 5, 7, 9].
  2. filter checks one score at a time.
  3. Scores that pass the test are copied into passing.
  4. Scores that fail the test are left out. | Score | score >= minimum | Result | | --- | --- | --- | | 1 | false | drop | | 5 | true | keep | | 9 | true | keep |

Exercise: filter_values.js

Use filter to keep scores at or above a minimum and print the kept values