Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/franciscotln/callbag-drop-repeats
Callbag operator that Drops consecutive duplicate
https://github.com/franciscotln/callbag-drop-repeats
Last synced: 3 months ago
JSON representation
Callbag operator that Drops consecutive duplicate
- Host: GitHub
- URL: https://github.com/franciscotln/callbag-drop-repeats
- Owner: franciscotln
- License: mit
- Created: 2018-03-23T14:53:29.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-04T02:36:47.000Z (almost 2 years ago)
- Last Synced: 2024-10-20T13:42:54.402Z (3 months ago)
- Language: JavaScript
- Size: 23.4 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
- awesome-callbags - drop-repeats
README
# callbag-drop-repeats
Drops consecutive duplicate values. Works on either pullable or listenable sources.
Takes an optional custom predicate function.
If not provided then `(a, b) => a === b` will be used.`npm install callbag-drop-repeats`
## Examples
### Listenables
```js
const dropRepeats = require('callbag-drop-repeats');
const { forEach, map, interval, pipe, take } = require('callbag-basics');pipe(
interval(1000),
take(3),
map(() => 'Always me, but once'),
dropRepeats(),
forEach((x) => {
console.log(x); // 'Always me, but once'
})
);
```### Pullables
Without a predicate function:
```js
const dropRepeats = require('callbag-drop-repeats');
const { forEach, fromIter, pipe } = require('callbag-basics');pipe(
fromIter([0, 0, 0, 1]),
dropRepeats(),
forEach((x) => {
console.log(x); // 0
}) // 1
);
```With a predicate function:
```js
const dropRepeats = require('callbag-drop-repeats');
const { forEach, fromIter, pipe } = require('callbag-basics');pipe(
fromIter([{ name: 'A' }, { name: 'A' }, { name: 'B' }]),
dropRepeats((prev, curr) => prev.name === curr.name),
forEach((x) => {
console.log(x); // { name: 'A' }
}) // { name: 'B' }
);
```