A proposal to add Array.prototype.filterReject.
const array = [1, 2, 3, 4, 5];
// filter keeps the items that return true.
array.filter(i => (i < 3)); // => [1, 2];
// filterReject removes the items that return true.
array.filterReject(i => (i < 3)); // => [3, 4, 5];- Justin Ridgewell (@jridgewell)
Current Stage: 1
Array.p.filter is confusing. I constantly have to ask myself "am I
keeping, or filtering out the current item?".
- "Keeping"
-
Implies that returning
truewould keep the current item. - "Filtering out"
-
Implies that returning
truewould remove the current item.
Array.p.filter acts as "keeping". But when I think of the word
"filter", I think of "filtering out". So every time that I attempt to
write an array filter, I end up writing the opposite of what I intended.
Array.p.filterReject attempts to fix this confusion. By providing a
clearly named filtering function that matches my intuition, I'm able
what will happen when calling filterReject. And because it exists, I'm
able to assume that filter does something different, so it must be
"keep" version.
A polyfill is available in the core-js library. You can find it in the ECMAScript proposals section.
- Supporting Data from HTTP Archive and GitHub Archive
- What should
filterOutbe called? - Should
partitionbe included?
- Ruby
- Underscore
_.select(aliased to _.filter)_.reject_.partition
- Lodash