Operators for RxJS for filtering with boolean logic
npm install @rxjs-ninja/rxjs-array
Website
|
API Documentation
|
Changelog
@rxjs-ninja/rxjs-array provides operators for RxJS for working with
of Array types in RxJS.
A full list is available on the API Page.
Operators that return source Arrays, or items from arrays using filtering functions or properties.
``ts
const technology$ = of(['RxJS', 'TypeScript', 'Angular', 'Node', 'NativeScript', 'RxJS Ninja']);
const frontEnd$ = of(['RxJS', 'TypeScript', 'Angular', 'RxJS Ninja', 'React']);
// Get the intersection between two Array values
technology$.pipe(intersection(frontEnd$)).subscribe();
// Output: ['RxJS', 'TypeScript', 'Angular', 'RxJS Ninja']
// Get the difference in the source array
technology$.pipe(difference(frontEnd$)).subscribe();
// Output: ['Node', 'NativeScript']
// Get the difference from both source and input
technology$.pipe(differenceAll(frontEnd$)).subscribe();
// Output: [ ['Node', 'NativeScript'], ['React'] ]
`
Operators for working with Map
objects and converting to and from Array
`ts
const technology$ = of(['RxJS', 'TypeScript', 'Angular', 'Node', 'NativeScript', 'RxJS Ninja']);
const categories$ = of(['Library', 'Language', 'Framework', 'Runtime', 'Framework', 'Library']);
// Merge two arrays into a tuple and convert it to a map
combineLatest([technology$, categories$])
.pipe(
map(([technology, categories]) => technology.map((tech, index) => [tech, categories[index]])),
toMap(),
tap((techStack) => {
console.log(techStack.has('TypeScript')); // true
console.log(techStack.get('RxJS Ninja')); // 'Library'
}),
)
.subscribe();
`
Operators for modifying the source Array such as sorting, reversing, changing the data or to a string
`ts
const technology$ = of(['RxJS', 'TypeScript', 'Angular', 'Node', 'NativeScript', 'RxJS Ninja']);
// Sort the array
technology$.pipe(sort()).subscribe();
// Output: ['Angular', 'NativeScript', 'Node', 'RxJS', 'RxJS Ninja', 'TypeScript']
// Reverse the array
technology$.pipe(reverse()).subscribe();
// Output: ['RxJS Ninja', 'NativeScript', 'Node', 'Angular', 'TypeScript', 'RxJS']
// Fill the array
technology$.pipe(fill('jQuery')).subscribe();
// Output: ['jQuery', 'jQuery', 'jQuery', 'jQuery', 'jQuery', 'jQuery']`
Operators for working
with Object
objects and converting to and from Array
`ts
const technology$ = of(['RxJS', 'TypeScript', 'Angular', 'Node', 'NativeScript', 'RxJS Ninja']);
const categories$ = of(['Library', 'Language', 'Framework', 'Runtime', 'Framework', 'Library']);
// Merge two arrays into a tuple and convert it to a map
combineLatest([technology$, categories$])
.pipe(
map(([technology, categories]) => technology.map((tech, index) => [index, { tech, category: categories[index] }])),
toObject(),
)
.subscribe();
// {
// 1: { name: 'RxJS', category: 'Library' }, 2: { name: 'Typescript', category: 'Languge' },
// 3: { name: 'Angular', category: 'Framework' }, 4: { name: 'Node', category: 'Runtime' }, ,
// 5: { name: 'NativeScript', category: 'Framework' }, 6: { name: 'RxJS Ninja', category: 'Library' },
// }
`
Operators for querying for indexes or truthy values related to Array contents
`ts
const technology$ = of(['RxJS', 'TypeScript', 'Angular', 'Node', 'NativeScript', 'RxJS Ninja']);
const frontEnd$ = of(['RxJS', 'TypeScript', 'Angular', 'RxJS Ninja', 'React']);
// Check is source is subset of input
technology$.pipe(isSubsetOf(frontEnd$)).subscribe();
// Output: false
// Check if source is a superset of input
technology$.pipe(isSupersetOf(frontEnd$)).subscribe();
// Output: true
// Check if the source array contains some strings with length < 5true
technology$.pipe(some((value) => value.length < 5)).subscribe();
// Output :
// Check if the source array strings are all length < 5false
technology$.pipe(every((value) => value.length < 5)).subscribe();
// Output : `
Operators for working with Set
objects and converting to and from Array
`ts
const technologyStream$ = of(['RxJS', 'TypeScript', 'Angular', 'RxJS', 'TypeScript', 'RxJS Ninja']);
// Covert array to set
technology$.pipe(toSet()).subscribe();
// Output: Set(4) { 'RxJS', 'TypeScript', 'Angular', 'RxJS Ninja' }``