diff --git a/snippets/filterFalsy.md b/snippets/filterFalsy.md new file mode 100755 index 000000000..0928a2ec1 --- /dev/null +++ b/snippets/filterFalsy.md @@ -0,0 +1,13 @@ +### filterFalsy + +Filters out the falsy values in an array. + +Use `Array.prototype.filter()` to get an array containing only truthy values. + +```js +const filterFalsy = arr => arr.filter(Boolean) +``` + +```js +filterFalsy(['', true, {}, false, 'sample', 1, 0]); // [true, {}, 'sample', 1] +``` diff --git a/tag_database b/tag_database index aaa61a47e..6b4ced2d4 100644 --- a/tag_database +++ b/tag_database @@ -75,6 +75,7 @@ everyNth:array,beginner extendHex:utility,string,intermediate factorial:math,recursion,beginner fibonacci:math,array,beginner +filterFalsy:array,beginner filterNonUnique:array,beginner filterNonUniqueBy:array,function,intermediate findKey:object,function,intermediate diff --git a/test/filterFalsy.test.js b/test/filterFalsy.test.js new file mode 100755 index 000000000..7f0e4166d --- /dev/null +++ b/test/filterFalsy.test.js @@ -0,0 +1,18 @@ +const expect = require('expect'); +const {filterFalsy} = require('._30s.js'); + +test('filterFalsy is a Function', () => { + expect(filterFalsy).toBeInstanceOf(Function); +}); + +test('filterFalsy filters different types of falsy values', () => { + expect(filterFalsy(['', true, {}, false, 'sample', 1, 0])).toEqual([true, {}, 'sample', 1]); +}); + +test('filterFalsy returns an empty array if you pass it an array of falsy values', () => { + expect(filterFalsy(['', 0, false, '', false, 0])).toEqual([]); +}); + +test('filterFalsy returns all of the truthy elements in an array', () => { + expect(filterFalsy([true, null, 'test', {}, []])).toEqual([true, 'test', {}, []]); +});