diff --git a/snippets/reject.md b/snippets/reject.md new file mode 100644 index 000000000..2aa61b618 --- /dev/null +++ b/snippets/reject.md @@ -0,0 +1,12 @@ +### reject + +Takes a predicate and array, like `Array.filter()`, but only keeps `x` if `pred(x) === false`. + +```js +const reject = (pred, array) => array.filter((...args) => !pred(...args)); +``` + +```js +reject(x => x % 2 === 0, [1, 2, 3, 4, 5]); // [1, 3, 5] +reject(word => word.length > 4, ['Apple', 'Pear', 'Kiwi', 'Banana']); // ['Pear', 'Kiwi'] +``` diff --git a/tag_database b/tag_database index 68504d62a..f8d0d5644 100644 --- a/tag_database +++ b/tag_database @@ -217,6 +217,7 @@ redirect:browser,url reducedFilter:array reduceSuccessive:array,function reduceWhich:array,function +reject:array remove:array removeNonASCII:string,regexp renameKeys:object diff --git a/test/reject/reject.js b/test/reject/reject.js new file mode 100644 index 000000000..85718b833 --- /dev/null +++ b/test/reject/reject.js @@ -0,0 +1,2 @@ +const reject = (pred, array) => array.filter((...args) => !pred(...args)); +module.exports = reject; \ No newline at end of file diff --git a/test/reject/reject.test.js b/test/reject/reject.test.js new file mode 100644 index 000000000..a82244682 --- /dev/null +++ b/test/reject/reject.test.js @@ -0,0 +1,24 @@ +const test = require('tape'); +const reject = require('./reject.js'); + +test('Testing reject', (t) => { + //For more information on all the methods supported by tape + //Please go to https://github.com/substack/tape + t.true(typeof reject === 'function', 'reject is a Function'); + + const noEvens = reject( + (x) => x % 2 === 0, + [1, 2, 3, 4, 5] + ); + + t.deepEqual(noEvens, [1, 3, 5]); + + const fourLettersOrLess = reject( + (word) => word.length > 4, + ['Apple', 'Pear', 'Kiwi', 'Banana'] + ); + + t.deepEqual(fourLettersOrLess, ['Pear', 'Kiwi']); + + t.end(); +});