JavaScript map, filter, and reduce
filter selects elements, map transforms them, and reduce combines them. Each callback receives the current element; reduce also receives the accumulator.
JavaScript
const values = [1, 2, 3, 4];
const even = values.filter(value => value % 2 === 0);
const squares = even.map(value => value * value);
const total = squares.reduce((sum, value) => sum + value, 0);
console.log(JSON.stringify(squares));
console.log(total);
if ([].reduce((sum, value) => sum + value, 0) !== 0) throw new Error("empty");