Skip to content

kaelzhang/node-lazy-concat

Repository files navigation

Build Status Coverage

lazy-concat

Lazily concat two arrays and exclude duplicate items at the joint, especially for sequential arrays.

Install

$ npm install lazy-concat

Usage

import concat from 'lazy-concat'

concat([1, 2, 3], [2, 3, 9], 9, 10)
// 2 of the second array matches the second position of the first array
// concat([1, 2, 3], [2, 3, 9]) -> [1, 2, 3, 9]
// 9 matches the last item of the previously concat item
// -> [1, 2, 3, 9]
// 10 does not match,
// so the result is [1, 2, 3, 9, 10]

const concat2 = concat.factory({
  equal: (a, b) => a.i = b.i
})

concat2([{i: 1}, {i: 2}], [{i: 2}, {i: 3}])  
// [{i: 1}, {i: 2}, {i: 3}]

concat([1, 2, 3], [1, 9])
// 1 of the second array matches the first item of the first array,
// but the match is too deep
// which is deeper than the length of the second array.
// So the match will be rejected.
// And the result is `[1, 2, 3, 1, 9]`

concat(null, [1, 2])  // it will throw

concat(...items)

  • items Array<any> the first item should not be null or undefined, or it will throw an error.

Returns Array

concat.factory({equal})

  • equal Function the method to match items, by default:
const equal = (a, b) => a === b

Returns Function the configured concat function.

License

MIT

About

Lazily concat two arrays and exclude duplicate items at the joint, especially for sequential arrays.

Resources

License

Stars

Watchers

Forks

Packages

No packages published