mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 19:48:12 +00:00
![]() PR-URL: https://github.com/nodejs/node/pull/12936 Reviewed-By: Anna Henningsen <anna@addaleax.net> |
||
---|---|---|
.. | ||
node_modules | ||
.npmignore | ||
.travis.yml | ||
example.js | ||
index.js | ||
LICENSE | ||
package.json | ||
README.md | ||
test.js |
sorted-union-stream
Get the union of two sorted streams
npm install sorted-union-stream
Usage
var union = require('sorted-union-stream')
var from = require('from2-array')
// es.readArray converts an array into a stream
var sorted1 = from.obj([1,10,24,42,43,50,55])
var sorted2 = from.obj([10,42,53,55,60])
// combine the two streams into a single sorted stream
var u = union(sorted1, sorted2)
u.on('data', function(data) {
console.log(data)
})
u.on('end', function() {
console.log('no more data')
})
Running the above example will print
1
10
24
42
43
50
53
55
60
no more data
Streaming objects
If you are streaming objects sorting is based on .key
.
If this property is not present you should add a toKey
function as the third parameter.
toKey
should return an key representation of the data that can be used to compare objects.
The keys MUST be sorted
var sorted1 = from.obj([{foo:'a'}, {foo:'b'}, {foo:'c'}])
var sorted2 = from.obj([{foo:'b'}, {foo:'d'}])
var u = union(sorted1, sorted2, function(data) {
return data.foo // the foo property is sorted
})
union.on('data', function(data) {
console.log(data)
});
Running the above will print
{foo:'a'}
{foo:'b'}
{foo:'c'}
{foo:'d'}
License
MIT