{"id":13406728,"url":"https://github.com/danrevah/ngx-pipes","last_synced_at":"2025-10-07T13:46:29.779Z","repository":{"id":37450924,"uuid":"74707723","full_name":"danrevah/ngx-pipes","owner":"danrevah","description":"⚡️ Useful pipes for Angular with no external dependencies! ","archived":false,"fork":false,"pushed_at":"2024-01-10T20:54:55.000Z","size":4520,"stargazers_count":1599,"open_issues_count":43,"forks_count":201,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-07T15:02:46.816Z","etag":null,"topics":["angular","javascript","ng","pipe","pipes","typescript"],"latest_commit_sha":null,"homepage":"https://danrevah.gitbooks.io/angular-pipes","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danrevah.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-24T22:03:44.000Z","updated_at":"2025-04-01T04:25:11.000Z","dependencies_parsed_at":"2024-06-18T12:18:19.402Z","dependency_job_id":"679a5c52-8c2c-4e0a-9a59-55277cb81e31","html_url":"https://github.com/danrevah/ngx-pipes","commit_stats":{"total_commits":507,"total_committers":29,"mean_commits":"17.482758620689655","dds":0.5641025641025641,"last_synced_commit":"0d526d5b1173af5701911efad8ccbd2904f1afb6"},"previous_names":["danrevah/ng-pipes"],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danrevah%2Fngx-pipes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danrevah%2Fngx-pipes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danrevah%2Fngx-pipes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danrevah%2Fngx-pipes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danrevah","download_url":"https://codeload.github.com/danrevah/ngx-pipes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767223,"owners_count":20992545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","javascript","ng","pipe","pipes","typescript"],"created_at":"2024-07-30T19:02:37.740Z","updated_at":"2025-10-07T13:46:24.713Z","avatar_url":"https://github.com/danrevah.png","language":"TypeScript","funding_links":[],"categories":["Uncategorized","Table of contents","TypeScript","Awesome Angular [![Awesome TipeIO](https://img.shields.io/badge/Awesome%20Angular-@TipeIO-6C6AE7.svg)](https://github.com/gdi2290/awesome-angular) [![Awesome devarchy.com](https://img.shields.io/badge/Awesome%20Angular-@devarchy.com-86BDC1.svg)](https://github.com/brillout/awesome-angular-components)","API","Intermediate snippets"],"sub_categories":["Uncategorized","Third Party Components","Angular \u003ca id=\"angular\"\u003e\u003c/a\u003e","Pipe","Reusing existing custom pipes"],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg \n    src=\"assets/ngx-logo.png\" width=\"160\" border=\"0\" alt=\"NGX-PIPES\"\u003e\n\u003cbr/\u003e\u003cbr/\u003e\n\u003ca href=\"https://www.npmjs.com/package/ngx-pipes\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/ngx-pipes.svg?style=flat-square\" alt=\"npm\"\u003e\u003c/a\u003e\n\u003ca href=\"http://packagequality.com/#?package=ngx-pipes\"\u003e\u003cimg src=\"https://npm.packagequality.com/shield/ngx-pipes.svg?style=flat-square\" alt=\"Package Quality\"\u003e\u003c/a\u003e\n\u003ca href=\"https://travis-ci.org/danrevah/ngx-pipes\"\u003e\u003cimg src=\"https://img.shields.io/travis/danrevah/ngx-pipes.svg?style=flat-square\" alt=\"Travis\"\u003e\u003c/a\u003e\n\u003ca href=\"https://coveralls.io/github/danrevah/ngx-pipes?branch=master\"\u003e\u003cimg src=\"https://img.shields.io/coveralls/danrevah/ngx-pipes.svg?style=flat-square\" alt=\"Coveralls\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/package/ngx-pipes\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/ngx-pipes.svg?style=flat-square\" alt=\"npm\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/package/ngx-pipes\"\u003e\u003cimg src=\"https://img.shields.io/npm/dt/ngx-pipes?style=flat-square\" alt=\"npm\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/danrevah/ngx-pipes/blob/master/LICENSE.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\" alt=\"MIT licensed\"\u003e\u003c/a\u003e\n\u003cbr/\u003e\u003cbr/\u003e\n Useful pipes for Angular with no external dependencies\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c/p\u003e\n\n## Table of contents\n\n - [Installation](#installation)\n - [Contributing](#contributing)\n - [Changelog](CHANGELOG.md)\n - [Date](#date)   \n    - [timeAgo](#timeago)\n - [String](#string)\n    - [aOrAn](#aoran)\n    - [repeat](#repeat)\n    - [scan](#scan)\n    - [shorten](#shorten)\n    - [stripTags](#striptags)\n    - [ucfirst](#ucfirst)\n    - [ucwords](#ucwords)\n    - [trim](#trim)\n    - [ltrim](#ltrim)\n    - [rtrim](#rtrim)\n    - [reverse](#reverse)\n    - [slugify](#slugify)\n    - [camelize](#camelize)\n    - [latinise](#latinise)\n    - [lines](#lines)\n    - [underscore](#underscore)\n    - [test](#test)\n    - [match](#match)\n    - [lpad](#lpad)\n    - [rpad](#rpad)\n    - [makePluralString](#makepluralstring)\n    - [wrap](#wrap)\n - [Array](#Array)   \n    - [diff](#diff)\n    - [flatten](#flatten)\n    - [initial](#initial)\n    - [intersection](#intersection)\n    - [range](#range)\n    - [reverse](#reverse)\n    - [tail](#tail)\n    - [truthify](#truthify)\n    - [union](#union)\n    - [unique](#unique)\n    - [without](#without)\n    - [pluck](#pluck)\n    - [shuffle](#shuffle)\n    - [every](#every)\n    - [some](#some)\n    - [sample](#sample)\n    - [groupBy](#groupby)\n    - [groupByImpure](#groupbyimpure)\n    - [filterBy](#filterby)\n    - [filterByImpure](#filterbyimpure)\n    - [orderBy](#orderby)\n    - [orderByImpure](#orderbyimpure)\n    - [chunk](#chunk)\n    - [fromPairs](#fromPairs)\n - [Object](#object)\n    - [keys](#keys)\n    - [values](#values)\n    - [pairs](#pairs)\n    - [pick](#pick)\n    - [omit](#omit)\n    - [invert](#invert)\n    - [invertBy](#invertby)\n    - [diffObj](#diffobj)\n - [Math](#math)   \n    - [min](#min)\n    - [max](#max)\n    - [sum](#sum)\n    - [average](#average)\n    - [percentage](#percentage)\n    - [ceil](#ceil)\n    - [floor](#floor)\n    - [round](#round)\n    - [sqrt](#sqrt)\n    - [pow](#pow)\n    - [degrees](#degrees)\n    - [radians](#radians)\n    - [bytes](#bytes)\n - [Boolean](#boolean)   \n    - [isNull](#isnull)\n    - [isDefined](#isdefined)\n    - [isUndefined](#isundefined)\n    - [isString](#isstring)\n    - [isFunction](#isfunction)\n    - [isNumber](#isnumber)\n    - [isArray](#isarray)\n    - [isObject](#isobject)\n    - [isGreaterThan](#isgreaterthan)\n    - [isGreaterEqualThan](#isgreaterequalthan)\n    - [isLessThan](#islessthan)\n    - [isLessEqualThan](#islessequalthan)\n    - [isEqualTo](#isequalto)\n    - [isNotEqualTo](#isnotequalto)\n    - [isIdenticalTo](#isidenticalto)\n    - [isNotIdenticalTo](#isnotidenticalto)\n \n\n## Installation\n\n1. Use npm to install the package\n\n  ```terminal\n  $ npm install ngx-pipes --save \n  ```\n\n2. You could either add into your module `imports` the `NgPipesModule` in order to add all of the pipes, Or add a specific module such as `NgArrayPipesModule`, `NgObjectPipesModule`, `NgStringPipesModule`, `NgMathPipesModule`, `NgDatePipesModule` or `NgBooleanPipesModule`.\n\n  ```typescript\n  import {NgPipesModule} from 'ngx-pipes';\n  \n  @NgModule({\n   // ...\n   imports: [\n     // ...\n     NgPipesModule\n   ]\n  })\n  ```\n\n3. Pipes are also injectable and can be used in Components / Services / etc..\n\n  ```typescript  \n  import {ReversePipe} from 'ngx-pipes';\n\n  @Component({\n    // ..\n    providers: [ReversePipe]\n  })\n  export class AppComponent {\n    constructor(private reversePipe: ReversePipe) {\n      this.reversePipe.transform('foo'); // Returns: \"oof\"\n    }\n    // ..\n  }\n  ```\n\n4. You can also use pipes as part of your template for ex. \n\n```html\n\u003cp\u003e{{ 'foo' | reverse }}\u003c/p\u003e \u003c!-- Output: \"oof\" --\u003e\n```\n\nand it's also possible to stack multiple pipes\n\n```html\n\u003cp\u003e{{ ' foo' | ltrim | reverse }}\u003c/p\u003e \u003c!-- Output: \"oof\" --\u003e\n```\n\n\n## Date\n\n### timeAgo\n\nTime ago pipe converts date to 'just now', 'X days ago', 'last week', 'X days ago', etc..\n\n**Usage:** `string | timeAgo`\n```typescript\nimport * as moment from 'moment';\n\nconst now = new Date();\n\n// timeAgo also supports moment.js objects\nconst lastWeek = moment().subtract(10, 'days');\n```\n\n```html\n\u003cspan\u003eUpdated: {{now | timeAgo}}\u003c/span\u003e \u003c!-- Output: \"just now\" --\u003e\n\u003cspan\u003eUpdated: {{lastWeek | timeAgo}}\u003c/span\u003e \u003c!-- Output: \"last week\" --\u003e\n```\n\n## String\n\n### aOrAn\n\nPrefixes input string with \"a\" or \"an\".\n\n**Usage:** `string | aOrAn`\n\n```html\n\u003cspan\u003eThis is a picture of {{imageDescription | aOrAn}}\u003c/span\u003e\n```\n\n### repeat\n\nRepeats a string n times\n\n**Usage:** `string | repeat: times: [separator|optional]`\n\n```html\n\u003cp\u003e{{ 'example' | repeat: 3: '@' }}\u003c/p\u003e \u003c!-- Output: \"example@example@example\" --\u003e\n```\n\n### scan\n\nScans string and replace `{i}` placeholders by equivalent member of the array\n\n**Usage:** `string | scan: [ARRAY]`\n\n```html\n\u003cp\u003e{{'Hey {0}, {1}' | scan: ['foo', 'bar']}}\u003c/p\u003e \u003c!-- Output: \"Hey foo, bar\" --\u003e\n```\n\n### shorten\n\nShortening a string by length and providing a custom string to denote an omission\n\n**Usage:** `string | shorten: length: [suffix|optional]: [wordBreak boolean|optional]`\n\n```html\n\u003cp\u003e{{'Hey foo bar' | shorten: 3: '...'}}\u003c/p\u003e \u003c!-- Output: \"Hey...\" --\u003e\n```\n\n### stripTags\n\nStrips a HTML tags from string and providing which tags should not be removed\n\n**Usage:** `string | stripTags: [ARRAY]`\n\n```html\n\u003cp\u003e{{'\u003ca href=\"\"\u003efoo\u003c/a\u003e \u003cp class=\"foo\"\u003ebar\u003c/p\u003e' | stripTags }}\u003c/p\u003e \u003c!-- Output: \"foo bar\" --\u003e\n\u003cp\u003e{{'\u003ca href=\"\"\u003efoo\u003c/a\u003e \u003cp class=\"foo\"\u003ebar\u003c/p\u003e' | stripTags: 'p'}}\u003c/p\u003e \u003c!-- Output: foo \u003cp class=\"foo\"\u003ebar\u003c/p\u003e --\u003e\n```\n\n### ucfirst\n\nUppercase first letter of first word\n\n```html\n\u003cp\u003e{{'foo bar' | ucfirst }}\u003c/p\u003e \u003c!-- Output: \"Foo bar\" --\u003e\n```\n\n### ucwords\n\nUppercase first letter every word\n\n```html\n\u003cp\u003e{{'foo bar' | ucwords }}\u003c/p\u003e \u003c!-- Output: \"Foo Bar\" --\u003e\n\u003cp\u003e{{'shaquille o'neal' | ucwords }}\u003c/p\u003e \u003c!-- Output: \"Shaquille O'Neal\" --\u003e\n```\n\n### trim\n\nStrips characters from the beginning and end of a string (default character is space).\n\n**Usage:** `string | trim: [characters|optional]`\n\n```html\n\u003cp\u003e{{'  foo  ' | trim }}\u003c/p\u003e \u003c!-- Output: \"foo\" --\u003e\n\u003cp\u003e{{'foobarfoo' | trim: 'foo' }}\u003c/p\u003e \u003c!-- Output: \"bar\" --\u003e\n```\n\n### ltrim\n\nStrips characters from the beginning of a string (default character is space).\n\n**Usage:** `string | ltrim: [characters|optional]`\n\n```html\n\u003cp\u003e{{'  foo  ' | ltrim }}\u003c/p\u003e \u003c!-- Output: \"foo  \" --\u003e\n\u003cp\u003e{{'foobarfoo' | ltrim: 'foo' }}\u003c/p\u003e \u003c!-- Output: \"barfoo\" --\u003e\n```\n\n### rtrim\n\nStrips characters from the end of a string (default character is space).\n\n**Usage:** `string | rtrim: [characters|optional]`\n\n```html\n\u003cp\u003e{{'  foo  ' | rtrim }}\u003c/p\u003e \u003c!-- Output: \"  foo\" --\u003e\n\u003cp\u003e{{'foobarfoo' | rtrim: 'foo' }}\u003c/p\u003e \u003c!-- Output: \"foobar\" --\u003e\n```\n\n### reverse\n\nReverses a string\n\n**Usage:** `string | reverse`\n\n```html\n\u003cp\u003e{{'foo bar' | reverse }}\u003c/p\u003e \u003c!-- Output: \"rab oof\" --\u003e\n```\n\n### slugify\n\nSlugify a string (lower case and add dash between words).\n\n**Usage:** `string | slugify`\n\n```html\n\u003cp\u003e{{'Foo Bar' | slugify }}\u003c/p\u003e \u003c!-- Output: \"foo-bar\" --\u003e\n\u003cp\u003e{{'Some Text To Slugify' | slugify }}\u003c/p\u003e \u003c!-- Output: \"some-text-to-slugify\" --\u003e\n```\n\n### camelize\n\nCamelize a string replaces dashes and underscores and converts to camelCase string.\n\n**Usage:** `string | camelize`\n\n```html\n\u003cp\u003e{{'foo_bar' | camelize }}\u003c/p\u003e \u003c!-- Output: \"fooBar\" --\u003e\n\u003cp\u003e{{'some_dashed-with-underscore' | camelize }}\u003c/p\u003e \u003c!-- Output: \"someDashedWithUnderscore\" --\u003e\n\u003cp\u003e{{'-dash_first-' | camelize }}\u003c/p\u003e \u003c!-- Output: \"dashFirst\" --\u003e\n```\n\n### latinise\n\nRemoves accents from Latin characters.\n\n**Usage:** `string | latinise`\n\n```html\n\u003cp\u003e{{'Féé' | latinise }}\u003c/p\u003e \u003c!-- Output: \"Fee\" --\u003e\n\u003cp\u003e{{'foo' | latinise }}\u003c/p\u003e \u003c!-- Output: \"foo\" --\u003e\n```\n\n### lines\n\nConverts a string with new lines into an array of each line.\n\n**Usage:** `string | lines`\n\n```html\n\u003cp\u003e{{'Some\\nSentence with\\r\\nNew line' | lines }}\u003c/p\u003e \u003c!-- Output: \"['Some', 'Sentence with', 'New line']\" --\u003e\n```\n\n### underscore\n\nConverts camelCase string to underscore.\n\n**Usage:** `string | underscore`\n\n```html\n\u003cp\u003e{{'angularIsAwesome' | underscore }}\u003c/p\u003e \u003c!-- Output: \"angular_is_awesome\" --\u003e\n\u003cp\u003e{{'FooBar' | underscore }}\u003c/p\u003e \u003c!-- Output: \"foo_bar\" --\u003e\n```\n\n### test\n\nTests if a string matches a pattern.\n\n**Usage:** `string | test: {RegExp}: {Flags}`\n\n```html\n\u003cp\u003e{{'foo 42' | test: '[\\\\d]+$': 'g' }}\u003c/p\u003e \u003c!-- Output: true --\u003e\n\u003cp\u003e{{'42 foo' | test: '[\\\\d]+$': 'g' }}\u003c/p\u003e \u003c!-- Output: false --\u003e\n\u003cp\u003e{{'FOO' | test: '^foo': 'i' }}\u003c/p\u003e \u003c!-- Output: true --\u003e\n```\n\n### match\n\nReturns array of matched elements in string.\n\n**Usage:** `string | match: {RegExp}: {Flags}`\n\n```html\n\u003cp\u003e{{'foo 42' | match: '[\\\\d]+$': 'g' }}\u003c/p\u003e \u003c!-- Output: '42' --\u003e\n\u003cp\u003e{{'42 foo' | match: '[\\\\d]+$': 'g' }}\u003c/p\u003e \u003c!-- Output: null --\u003e\n\u003cp\u003e{{'FOO' | match: '^foo': 'i' }}\u003c/p\u003e \u003c!-- Output: 'FOO' --\u003e\n```\n\n### lpad\n\nLeft pad a string to a given length using a given pad character (default is a space)\n\n\n**Usage:** `string | lpad: length: [padCharacter:string|optional]`\n\n```html\n\u003cp\u003e{{'foo' | lpad: 5}}\u003c/p\u003e \u003c!-- Output: \"  foo\" --\u003e\n\u003c!-- Cast a number to string in order to left pad it with zeros --\u003e\n\u003cp\u003e{{String(3) | lpad: 5: '0'}}\u003c/p\u003e \u003c!-- Output: \"00003\" --\u003e\n```\n\n### rpad\n\nRight pad a string to a given length using a given pad character  (default is a space)\n\n\n**Usage:** `string | rpad: length: [padCharacter:string|optional]`\n\n```html\n\u003cp\u003e{{'Foo' | rpad: 5: '#'}}\u003c/p\u003e \u003c!-- Output: \"Foo##\" --\u003e\n```\n\n### makePluralString\n\nMake a singular string plural. Optional `quantity` argument specifies how many of the singular string there are.\n\n**Usage:** `string | makePluralString: [quantity:string|optional]`\n\n```html\n\u003cspan\u003e{{'Painting' | makePluralString}}\u003c/span\u003e \u003c!-- Output: \"Paintings\" --\u003e\n\u003cspan\u003e{{'Painting' | makePluralString: 1}}\u003c/span\u003e \u003c!-- Output: \"Painting\" --\u003e\n\u003cspan\u003e{{'One Painting' | makePluralString: 1}}\u003c/span\u003e \u003c!-- Output: \"One Painting\" --\u003e\n\u003cspan\u003e{{'Painting' | makePluralString: 4}}\u003c/span\u003e \u003c!-- Output: \"Paintings\" --\u003e\n\u003cspan\u003e{{'Four Painting' | makePluralString: 4}}\u003c/span\u003e \u003c!-- Output: \"Four Paintings\" --\u003e\n``` \n\n\n### wrap\n\nWrap a string between a prefix and a suffix\n\n\n**Usage:** `string | wrap: prefix: suffix`\n\n```html\n\u003cp\u003e{{'Foo' | wrap: 'nice prefix ': ' and awesome suffix!'}}\u003c/p\u003e \u003c!-- Output: \"nice prefix Foo and awesome suffix!\" --\u003e\n```\n\n## Array\n\n### diff\n\nReturns array of diff between arrays \n\n**Usage:** `array | diff: [ARRAY]: [ARRAY]: ... : [ARRAY]`\n\n```typescript\nthis.items = [1, 2, 3, 4];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | diff: [1, 2]\"\u003e \u003c!-- Array: [3, 4] --\u003e\n```\n\n### flatten\n\nFlattens nested array, passing shallow will mean it will only be flattened a single level\n\n**Usage:** `array | flatten: [shallow|optional]`\n\n```typescript\nthis.items = [1,2,3,[4,5,6,[7,8,9],[10,11,12,13,[14],[15],[16, [17]]]]];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | flatten\"\u003e \n\u003c!-- Array: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] --\u003e\n```\n\n### initial\n\nSlicing off the end of the array by n elements\n\n**Usage:** `array | initial: n`\n\n```typescript\nthis.items = [first, second, third];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | initial: 1\"\u003e \u003c!-- Array: [first, second] --\u003e\n```\n\n### tail\n\nSlicing off the start of the array by n elements\n\n**Usage:** `array | tail: n`\n\n```typescript\nthis.items = [first, second, third];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | tail: 1\"\u003e \u003c!-- Array: [second, third] --\u003e\n```\n\n### intersection\n\nReturns the intersections of an arrays\n\n**Usage:** `array | intersection: [ARRAY]: [ARRAY]: ... : [ARRAY]`\n\n```typescript\nthis.items = [1, 2, 3, 4, 5];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | intersection: [1, 2, 3]: [3, 6]\"\u003e \u003c!-- Array: [3] --\u003e\n```\n\n### range\n\nReturns an array with range of numbers\n\n**Usage:** `range: [start: number, default = '1']: [count: number]: [step: number | optional, default = '1']`\n\n```typescript\nthis.items = this.rangePipe.transform(1, 5); // Returns: [1, 2, 3, 4, 5]\n```\n\n```html\n\u003cli *ngFor=\"let item of items\"\u003e \u003c!-- Array: [1, 2, 3, 4, 5] --\u003e\n```\n\n### reverse\n\nReverses an array\n\n**Usage:** `array | reverse`\n\n```typescript\nthis.items = [1, 2, 3];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | reverse\"\u003e \u003c!-- Array: [3, 2, 1] --\u003e\n```\n\n### truthify\n\nRemoves un-truthy values from array\n\n**Usage:** `array | truthify`\n\n```typescript\nthis.items = [null, 1, false, undefined, 2, 0, 3, NaN, 4, ''];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | truthify\"\u003e \u003c!-- Array: [1, 2, 3, 4] --\u003e\n```\n\n### union\n\nCombine two arrays\n\n**Usage:** `array | union: [ARRAY]`\n\n```typescript\nthis.items = [1, 2, 3];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | union: [[4]]\"\u003e \u003c!-- Array: [1, 2, 3, 4] --\u003e\n```\n\n### unique\n\nRemoves duplicates from array\n\n**Usage:** `array | unique: 'Property (Optional)'`\n\n```typescript\nthis.items = [1, 2, 3, 1, 2, 3];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | unique\"\u003e \u003c!-- Array: [1, 2, 3] --\u003e\n```\n\n### without\n\nReturns array without specific elements\n\n**Usage:** `array | without: [ARRAY]`\n\n```typescript\nthis.items = [1, 2, 3, 1, 2, 3];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | without: [1,3]\"\u003e \u003c!-- Array: [2, 2] --\u003e\n```\n\n### pluck\n\nReturns array of properties values\n\n**Usage:** `array | pluck: propertyName`\n\n```typescript\nthis.items = [\n  {\n    a: 1, \n    b: {\n      c: 4\n    }\n  }, \n  {\n    a: 2, \n    b: {\n      c: 5\n    }\n  }, \n  {\n    a: 3, \n    b: {\n      c: 6\n    }\n  }, \n];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | pluck: 'a'\"\u003e \u003c!-- Array: [1, 2, 3] --\u003e\n\u003cli *ngFor=\"let item of items | pluck: 'b.c'\"\u003e \u003c!-- Array: [4, 5, 6] --\u003e\n```\n\n### shuffle\n\nReturns randomly shuffled array\n\n**Usage:** `array | shuffle`\n\n```typescript\nthis.items = [1, 2, 3, 4, 5, 6];\n```\n\n```html\n\u003cli *ngFor=\"let item of items | shuffle\"\u003e \u003c!-- Array: [4, 1, 6, 2, 5, 3] --\u003e\n```\n\n### every\n\nReturns true if every elements of the array fits the predicate otherwise false\n\n**Usage:** `array | every: predicate`\n\n```typescript\nthis.itemsOne = [1, 1, 1];\nthis.itemsTwo = [1, 1, 2];\nthis.itemsThree = [2, 2, 2];\nthis.predicate = (value: any, index: number, array: any[]): boolean =\u003e {\n  return value === 1;\n};\n```\n\n```html\n\u003cp\u003e{{ itemsOne | every: predicate }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ itemsTwo | every: predicate }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ itemsThree | every: predicate }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### some\n\nReturns true if some elements of the array fits the predicate otherwise false\n\n**Usage:** `array | some: predicate`\n\n```typescript\nthis.itemsOne = [1, 1, 1];\nthis.itemsTwo = [1, 1, 2];\nthis.itemsThree = [2, 2, 2];\nthis.predicate = (value: any, index: number, array: any[]): boolean =\u003e {\n  return value === 1;\n};\n```\n\n```html\n\u003cp\u003e{{ itemsOne | some: predicate }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ itemsTwo | some: predicate }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ itemsThree | some: predicate }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### sample\n\nReturns sample items randomly from array\n\n**Usage:** `array | sample: [amount | default = 1]`\n\n```html\n\u003cp\u003e{{ [1, 2, 3, 4] | sample }}\u003c/p\u003e \u003c!-- Output: \"[2]\" --\u003e\n\u003cp\u003e{{ [1, 2, 3, 4] | sample: 2 }}\u003c/p\u003e \u003c!-- Output: \"[4, 3]\" --\u003e\n```\n\n### groupBy\n\nReturns object of grouped by items by discriminator, and supports nested properties.\n\n**Usage:** `array | groupBy: [string[] | string | Function]: [delimiter: string | optional, default = '|']`\n\n```typescript\nthis.arrayObject = [\n  {id: 1, elm: 'foo', value: 0}, \n  {id: 2, elm: 'bar', value: 1}, \n  {id: 3, elm: 'foo', value: 2}, \n  {id: 4, elm: 'foo', value: 2}\n];\n\nthis.arrayNestedObject = [\n  {id: 1, prop: { deep: 'foo' }},\n  {id: 2, prop: { deep: 'bar' }},\n  {id: 3, prop: { deep: 'foo' }},\n  {id: 4, prop: { deep: 'bar' }}\n];\n```\n\n```html\n\u003cp\u003e{{ arrayObject | groupBy: 'elm' }}\u003c/p\u003e \n\u003c!-- Output: \"{foo: [{id: 1, elm: 'foo', value: 0}, {id: 3, elm: 'foo', value: 2}, {id: 4, elm: 'foo', value: 2}], bar: [{id: 2, elm: 'bar', value: 1}]}\" --\u003e\n\n\u003cp\u003e{{ arrayObject | groupBy: ['elm', 'value'] }}\u003c/p\u003e \n\u003c!-- Output: \"{'foo|0': [{elm: foo, value: 0}], 'bar|1': [{elm:bar,value: 1}], 'foo|2': [{elm:foo, value: 2}], 'bar|3': [{elm:bar, value: 3}]}\" --\u003e\n\n\u003cp\u003e{{ arrayObject | groupBy: ['elm', 'value']: '_' }}\u003c/p\u003e \n\u003c!-- Output: \"{foo_0: [{elm: foo, value: 0}], bar_1: [{elm:bar,value: 1}], foo_2: [{elm:foo, value: 2}], bar_3: [{elm:bar, value: 3}]}\" --\u003e\n\n\u003cp\u003e{{ arrayNestedObject | groupBy: 'prop.deep' }}\u003c/p\u003e \n\u003c!-- Output:{foo: [{id: 1, prop: {deep: foo}}, {id: 3, prop: {deep: foo}}], bar: [{id: 2, prop: {deep: bar}}, {id: 4, prop: {deep: bar}}]}\" --\u003e\n```\n\n### groupByImpure\n\nIdentical to groupBy pipe, the only difference is that it's an impure pipe.\n\nImpure pipes: https://angular.io/guide/pipes#impure-pipes\n\n### filterBy\n\nReturns object array of grouped by items by discriminator\n\n**Usage:** `array | filterBy: [prop, nested.prop, ...]: search: [strict | optional]`\n\n```typescript\nthis.users = [\n   {id: 1, first_name: 'John', last_name: 'Doe', work: { company: 'Foo Tech' }},\n   {id: 2, first_name: 'Jane', last_name: 'West', work: { company: 'AAA Solutions' }},\n   {id: 3, first_name: 'Bruce', last_name: 'John', work: { company: 'Bar Tech' }},\n   {id: 4, first_name: 'William', last_name: 'Cent', work: { company: 'Foo Tech' }, arr: [{name: 'foo'}]}\n];\n```\n\n```html\n\u003c!-- Returns users with `id` of 1 --\u003e\n\u003cp\u003e{{ users | filterBy: ['id']: 1 }}\u003c/p\u003e \n\u003c!-- Output: \"[{id: 1, first_name: 'John', last_name: 'Doe', work: { company: 'Foo Tech', previous_company: '' }}]\" --\u003e\n\n\u003c!-- filterBy also support nested properties --\u003e\n\u003cp\u003e{{ users | filterBy: ['work.company']: 'Bar Tech' }}\u003c/p\u003e \n\u003c!-- Output: \"[{ \"id\": 3, \"first_name\": \"Bruce\", \"last_name\": \"John\", \"work\": { \"company\": \"Bar Tech\", \"previous_company\": \"\" } }]\" --\u003e\n\n\u003c!-- filterBy also support nested properties inside of an array --\u003e\n\u003cp\u003e{{ users | filterBy: ['arr.name']: 'foo' }}\u003c/p\u003e \n\u003c!-- Output: \"[{id: 4, first_name: 'William', last_name: 'Cent', work: { company: 'Foo Tech' }, arr: [{name: 'foo'}]}]\" --\u003e\n\n\u003c!-- Return users whose first name or last name is 'John'. --\u003e\n\u003cp\u003e{{ users | filterBy: ['first_name', 'last_name']: 'John' }}\u003c/p\u003e\n\u003c!-- Output: \"[{id: 1, first_name: 'John', last_name: 'Doe', work: { company: 'Foo Tech', previous_company: '' }}]\" --\u003e\n\n\u003c!-- Return users whose first name or last name is 'John' or 'Cent'. --\u003e\n\u003cp\u003e{{ users | filterBy: ['first_name', 'last_name']: ['John', 'Cent'] }}\u003c/p\u003e\n\u003c!-- Output: \"[{id: 1, first_name: 'John', last_name: 'Doe', work: { company: 'Foo Tech', previous_company: '' }}, {id: 3, first_name: 'Bruce', last_name: 'John', work: { company: 'Bar Tech' }}, {id: 4, first_name: 'William', last_name: 'Cent', work: { company: 'Foo Tech' }, arr: [{name: 'foo'}]}]\" --\u003e\n```\n\n### filterByImpure\n\nIdentical to filterBy pipe, the only difference is that it's an impure pipe.\n\nImpure pipes: https://angular.io/guide/pipes#impure-pipes\n\n### orderBy\n\nReturns ordered array by configuration \n\n**Usage:** `array | orderBy: [prop, nested.prop, array of props, ...]`\n\n```typescript\nconst numbers = [2, 1, 3];\n\nconst obj = [\n  {id: 4, name: 'Dave', amount: 2},\n  {id: 2, name: 'Michael', amount: 2},\n  {id: 3, name: 'Dan', amount: 1},\n  {id: 1, name: 'John', amount: 1}\n];\n\nconst deepObj = [\n  {id: 1, name: 'John', amount: 1337, deep: {prop: 4}},\n  {id: 2, name: 'Michael', amount: 42, deep: {prop: 2}},\n  {id: 3, name: 'Dan', amount: 1, deep: {prop: 1}},\n  {id: 4, name: 'Dave', amount: 2, deep: {prop: 3}}\n];\n```\n\n```html\n\u003c!-- Returns array ordered by value --\u003e\n\u003cp\u003e{{ numbers | orderBy }}\u003c/p\u003e  \u003c!-- Output: [1, 2, 3] --\u003e\n\u003cp\u003e{{ numbers | orderBy: '-' }}\u003c/p\u003e  \u003c!-- Output: [3, 2, 1] --\u003e\n\n\u003c!-- Returns array ordered by value of property --\u003e\n\u003cp\u003e{{ deepObj | orderBy: 'amount' }}\u003c/p\u003e  \n\u003c!-- Output: [{id: 3, ...}, {id: 4, ...}, {id: 2, ...}, {id: 1, ...}] --\u003e\n\u003cp\u003e{{ deepObj | orderBy: '-amount' }}\u003c/p\u003e  \n\u003c!-- Output: [{id: 1, ...}, {id: 2, ...}, {id: 4, ...}, {id: 3, ...}] --\u003e\n\n\u003c!-- Returns array ordered by value of deep property --\u003e\n\u003cp\u003e{{ deepObj | orderBy: 'deep.prop' }}\u003c/p\u003e  \n\u003c!-- Output: [{id: 3, ...}, {id: 2, ...}, {id: 4, ...}, {id: 1, ...}] --\u003e\n\u003cp\u003e{{ deepObj | orderBy: '-deep.prop' }}\u003c/p\u003e  \n\u003c!-- Output: [{id: 1, ...}, {id: 4, ...}, {id: 2, ...}, {id: 3, ...}] --\u003e\n\n\u003c!-- Returns array ordered by mutliple properties --\u003e\n\u003cp\u003e{{ obj | orderBy: ['amount', 'id'] }}\u003c/p\u003e  \n\u003c!-- Output: [{id: 1, ...}, {id: 3, ...}, {id: 2, ...}, {id: 4, ...}] --\u003e\n```\n\n### orderByImpure\n\nIdentical to orderBy pipe, the only difference is that it's an impure pipe.\n\nImpure pipes: https://angular.io/guide/pipes#impure-pipes\n\n### chunk\n\nReturns chunked array or string by size\n\n**Usage:** `array | size: [number | default = 1]`\n\n```html\n\u003cp\u003e{{ [1, 2, 3, 4, 5] | chunk: 2 }}\u003c/p\u003e\n\u003c!-- Output: \"[[1, 2], [3, 4], [5]]\" --\u003e\n```\n\n### fromPairs\n\nReturns object of an array of key value pairs \n\n**Usage:** `array | fromPairs`\n\n```html\n\u003cp\u003e{{ [['foo', 1], ['bar', 2]] | fromPairs }}\u003c/p\u003e \u003c!-- Output: \"{foo: 1, bar: 2}\" --\u003e\n\u003cp\u003e{{ [['foo', [1, 2]], ['bar', [3, 4]]] | fromPairs }}\u003c/p\u003e \u003c!-- Output: \"{foo: [1, 2], bar: [3, 4]}\" --\u003e\n```\n\n## Object\n\n### keys\n\nReturns array of object keys\n\n**Usage:** `object | keys`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | keys }}\u003c/p\u003e \u003c!-- Output: \"['foo', 'bar']\" --\u003e\n```\n\n### values\n\nReturns array of object values\n\n**Usage:** `object | values`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | values }}\u003c/p\u003e \u003c!-- Output: \"[1, 2]\" --\u003e\n```\n\n### pairs\n\nReturns array of an object key value pairs \n\n**Usage:** `object | pairs`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | pairs }}\u003c/p\u003e \u003c!-- Output: \"[['foo', 1], ['bar', 2]]\" --\u003e\n\u003cp\u003e{{ {foo: [1, 2], bar: [3, 4]} | pairs }}\u003c/p\u003e \u003c!-- Output: \"[['foo', [1, 2]], ['bar', [3, 4]]]\" --\u003e\n```\n\n### pick\n\nReturns object with picked keys from object\n\n**Usage:** `object | pick: [key | string]]`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | pick: 'foo' }}\u003c/p\u003e \u003c!-- Output: \"{foo: 1}\" --\u003e\n\u003cp\u003e{{ {foo: 1, bar: 2} | pick: 'foo': 'bar' }}\u003c/p\u003e \u003c!-- Output: \"{foo: 1, bar: 2}\" --\u003e\n```\n\n### omit\n\nReturns object after omitting keys from object (opposite of pick)\n\n**Usage:** `object | omit: [key | string]]`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | omit: 'foo' }}\u003c/p\u003e \u003c!-- Output: \"{bar: 2}\" --\u003e\n\u003cp\u003e{{ {foo: 1, bar: 2} | omit: 'foo': 'bar' }}\u003c/p\u003e \u003c!-- Output: \"{}\" --\u003e\n```\n\n### invert\n\nReturns object with inverted keys and values. in case of equal values, subsequent values overwrite property assignments of previous values.\n\n**Usage:** `object | invert`\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | invert }}\u003c/p\u003e \u003c!-- Output: \"{1: 'foo', 2: 'bar'}\" --\u003e\n```\n\n### invertBy\n\nReturns object with inverted keys and values. in case of equal values, will add to an array.\n\n**Usage:** `object | invertBy: [Function | optional]`\n\n```typescript\nthis.cb = (value): string =\u003e {\n  return `name_${value}`;\n};\n```\n\n```html\n\u003cp\u003e{{ {foo: 1, bar: 2} | invertBy }}\u003c/p\u003e \u003c!-- Output: \"{1: ['foo'], 2: ['bar']}\" --\u003e\n\u003cp\u003e{{ {foo: 1, bar: 2} | invertBy: cb }}\u003c/p\u003e \u003c!-- Output: \"{name_1: ['foo'], name_2: ['bar']}\" --\u003e\n\u003cp\u003e{{ {a: 1, b: 2, c: 1, d: 2} | invertBy }}\u003c/p\u003e \u003c!-- Output: \"{1: ['a', 'c'], 2: ['b', 'd']}\" --\u003e\n```\n\n### diffObj\n\nReturns a diff object of two objects\n\n**Usage:** `object | diffObj: Object`\n\n```html\n\u003cp\u003e{{ {a: 1} | diffObj: {a: 1} }}\u003c/p\u003e \u003c!-- Output: \"{}\" --\u003e\n\u003cp\u003e{{ {a: 1} | diffObj: {a: 2} }}\u003c/p\u003e \u003c!-- Output: \"{a: 1}\" --\u003e\n\u003cp\u003e{{ {a: 1, b: 2} | diffObj: {a: 1, b: 1} }}\u003c/p\u003e \u003c!-- Output: \"{b: 2}\" --\u003e\n\u003cp\u003e{{ {a: 1, b: 2, c: {d: 3} } | diffObj: {a: 1, b: 1, c: {d: 1} } }}\u003c/p\u003e \u003c!-- Output: \"{b: 2, c: {d: 3}}\" --\u003e\n```\n\n## Math\n\n### min\n\nReturns the minimum of a given array\n\n**Usage:** `array | min`\n\n```html\n\u003cp\u003e{{ [1, 2, 3, 1, 2, 3] | min }}\u003c/p\u003e \u003c!-- Output: \"1\" --\u003e\n```\n\n### max\n\nReturns the maximum of a given array\n\n**Usage:** `array | max`\n\n```html\n\u003cp\u003e{{ [1, 2, 3, 1, 2, 3] | max }}\u003c/p\u003e \u003c!-- Output: \"3\" --\u003e\n```\n\n### sum\n\nReturns the sum of a given array\n\n**Usage:** `array | sum`\n\n```html\n\u003cp\u003e{{ [1, 2, 3, 4] | sum }}\u003c/p\u003e \u003c!-- Output: \"10\" --\u003e\n```\n\n### average\n\nReturns the average of a given array\n\n**Usage:** `array | average`\n\n```html\n\u003cp\u003e{{ [1, 2, 3] | average }}\u003c/p\u003e \u003c!-- Output: \"2\" --\u003e\n\u003cp\u003e{{ [1, 2] | average }}\u003c/p\u003e \u003c!-- Output: \"1.5\" --\u003e\n```\n\n### percentage\n\nReturns percentage between numbers \n\n**Usage:** `number | percentage: [total | default = 100]: [floor | default = false]`\n\n```html\n\u003cp\u003e{{ 5 | percentage }}\u003c/p\u003e \u003c!-- Output: \"5\" --\u003e\n\u003cp\u003e{{ 5 | percentage: 160 }}\u003c/p\u003e \u003c!-- Output: \"3.125\" --\u003e\n\u003cp\u003e{{ 5 | percentage: 160: true }}\u003c/p\u003e \u003c!-- Output: \"3\" --\u003e\n```\n\n### ceil\n\nReturns ceil of a number by precision \n\n**Usage:** `number | ceil: [precision | default = 0]`\n\n```html\n\u003cp\u003e{{ 42.123 | ceil }}\u003c/p\u003e \u003c!-- Output: \"43\" --\u003e\n\u003cp\u003e{{ 42.123 | ceil: 2 }}\u003c/p\u003e \u003c!-- Output: \"42.13\" --\u003e\n```\n\n### floor\n\nReturns floor of a number by precision \n\n**Usage:** `number | floor: [precision | default = 0]`\n\n```html\n\u003cp\u003e{{ 42.123 | floor }}\u003c/p\u003e \u003c!-- Output: \"42\" --\u003e\n\u003cp\u003e{{ 42.123 | floor: 2 }}\u003c/p\u003e \u003c!-- Output: \"42.12\" --\u003e\n```\n\n### round\n\nReturns round of a number by precision \n\n**Usage:** `number | round: [precision | default = 0]`\n\n```html\n\u003cp\u003e{{ 42.4 | round }}\u003c/p\u003e \u003c!-- Output: \"42\" --\u003e\n\u003cp\u003e{{ 42.5 | round }}\u003c/p\u003e \u003c!-- Output: \"43\" --\u003e\n\u003cp\u003e{{ 42.123 | round: 2 }}\u003c/p\u003e \u003c!-- Output: \"42.12\" --\u003e\n```\n\n### sqrt\n\nReturns the square root of a number \n\n**Usage:** `number | sqrt`\n\n```html\n\u003cp\u003e{{ 9 | sqrt }}\u003c/p\u003e \u003c!-- Output: \"3\" --\u003e\n```\n\n### pow\n\nReturns the power of a number \n\n**Usage:** `number | pow: [power | default = 2]`\n\n```html\n\u003cp\u003e{{ 3 | pow }}\u003c/p\u003e \u003c!-- Output: \"9\" --\u003e\n\u003cp\u003e{{ 3 | pow: 3 }}\u003c/p\u003e \u003c!-- Output: \"27\" --\u003e\n```\n\n### degrees\n\nReturns the degrees of a number in radians \n\n**Usage:** `number | degrees`\n\n```html\n\u003cp\u003e{{ 3.141592653589793 | degrees }}\u003c/p\u003e \u003c!-- Output: \"180\" --\u003e\n```\n\n### radians\n\nReturns the radians of a number in degrees \n\n**Usage:** `number | radians`\n\n```html\n\u003cp\u003e{{ 180 | radians }}\u003c/p\u003e \u003c!-- Output: \"3.141592653589793\" --\u003e\n```\n\n### bytes\n\nReturns bytes with a unit symbol\n\n**Usage:** `number | bytes: [precision]`\n\n```html\n\u003cp\u003e{{ 10 | bytes }}\u003c/p\u003e \u003c!-- Output: \"10 B\" --\u003e\n\u003cp\u003e{{ 1048576 | bytes }}\u003c/p\u003e \u003c!-- Output: \"1 KB\" --\u003e\n\u003cp\u003e{{ 1073741824 | bytes }}\u003c/p\u003e \u003c!-- Output: \"1 MB\" --\u003e\n\u003cp\u003e{{ 1.0995116e12 | bytes }}\u003c/p\u003e \u003c!-- Output: \"1 GB\" --\u003e\n```\n\n## Boolean\n\n### isNull\n\n**Usage:** `any | isNull`\n\n```html\n\u003cp\u003e{{ null | isNull }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isNull }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isDefined\n\n**Usage:** `any | isDefined`\n\n```html\n\u003cp\u003e{{ 1 | isDefined }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ undefined | isDefined }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isUndefined\n\n**Usage:** `any | isUndefined`\n\n```html\n\u003cp\u003e{{ 1 | isUndefined }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ undefined | isUndefined }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n\n### isString\n\n**Usage:** `any | isString`\n\n```html\n\u003cp\u003e{{ 1 | isString }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ '' | isString }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isNumber\n\n**Usage:** `any | isNumber`\n\n```typescript\nthis.func = () =\u003e {};\nthis.num = 1;\n```\n\n```html\n\u003cp\u003e{{ num | isNumber }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ func | isNumber }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isArray\n\n**Usage:** `any | isArray`\n\n```typescript\nthis.arr = [1, 2];\nthis.num = 1;\n```\n\n```html\n\u003cp\u003e{{ num | isArray }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ arr | isArray }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isObject\n\n**Usage:** `any | isObject`\n\n```typescript\nthis.obj = {a: 1, b: 2};\nthis.num = 1;\n```\n\n```html\n\u003cp\u003e{{ num | isObject }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ obj | isObject }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isGreaterThan\n\n**Usage:** `number | isGreaterThan: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isGreaterThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isGreaterThan: 2 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 2 | isGreaterThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isGreaterEqualThan\n\n**Usage:** `number | isGreaterEqualThan: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isGreaterEqualThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isGreaterEqualThan: 2 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 2 | isGreaterEqualThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isLessThan\n\n**Usage:** `number | isLessThan: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isLessThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isLessThan: 2 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 2 | isLessThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isLessEqualThan\n\n**Usage:** `number | isLessEqualThan: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isLessEqualThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isLessEqualThan: 2 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 2 | isLessEqualThan: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isEqualTo\n\n**Usage:** `number | isEqualTo: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isEqualTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isEqualTo: '1' }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isEqualTo: 2 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 2 | isEqualTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isNotEqualTo\n\n**Usage:** `number | isNotEqualTo: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isNotEqualTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isNotEqualTo: '1' }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isNotEqualTo: 2 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 2 | isNotEqualTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n### isIdenticalTo\n\n**Usage:** `number | isIdenticalTo: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isIdenticalTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isIdenticalTo: '1' }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isIdenticalTo: 2 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 2 | isIdenticalTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n```\n\n### isNotIdenticalTo\n\n**Usage:** `number | isNotIdenticalTo: otherNumber`\n\n```html\n\u003cp\u003e{{ 1 | isNotIdenticalTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"false\" --\u003e\n\u003cp\u003e{{ 1 | isNotIdenticalTo: '1' }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 1 | isNotIdenticalTo: 2 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n\u003cp\u003e{{ 2 | isNotIdenticalTo: 1 }}\u003c/p\u003e \u003c!-- Output: \"true\" --\u003e\n```\n\n## Contributing\n\n* Before adding any new feature or a fix make sure to open an issue first!\n\nMake sure you have `angular-cli` \u0026 `karma` installed globally.\n\n```bash\n$ npm install -g angular-cli karma\n```\n\nClone the project, and install dependencies.\n\n```bash\n$ git clone https://github.com/danrevah/ngx-pipes.git\n$ npm install\n```\n\nCreate a new branch\n\n```bash\n$ git checkout -b feat/someFeature\n```\n\nAdd tests \u0026 make sure everything is running properly\n```bash\n$ npm test\n```\n\nCommit \u0026 push, and make a pull request!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanrevah%2Fngx-pipes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanrevah%2Fngx-pipes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanrevah%2Fngx-pipes/lists"}