Higher-Order Array Methods
Filtering Values
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
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(","));
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
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
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
- Start with
scores:[1, 3, 5, 7, 9]. filterchecks one score at a time.- Scores that pass the test are copied into
passing. - 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