#merge-arrays
Merge two sorted arrays into a sorted array of unique values from both.
$ nvm use
$ npm install
$ npm test| /node_modules | |
| *.log | |
| .DS_Store |
| v4.3.1 |
| language: node_js |
| { | |
| "concat": [ | |
| [ 17 ], | |
| [ 2, 6, 8, 10 ], | |
| [ 2, 6, 8, 10, 17 ] | |
| ], | |
| "same": [ | |
| [ 1, 2, 3 ], | |
| [ 1, 2, 3 ], | |
| [ 1, 2, 3 ] | |
| ], | |
| "empty": [ | |
| [ ], | |
| [ 2, 6 ], | |
| [ 2, 6 ] | |
| ], | |
| "both-empty": [ | |
| [ ], | |
| [ ], | |
| [ ] | |
| ], | |
| "t1": [ | |
| [ 1, 2, 3 ], | |
| [ 4, 5, 6 ], | |
| [ 1, 2, 3, 4, 5, 6 ] | |
| ], | |
| "t2": [ | |
| [ 1, 11 ], | |
| [ 2, 3, 10 ], | |
| [ 1, 2, 3, 10, 11 ] | |
| ], | |
| "t3": [ | |
| [ 2, 5, 6, 9 ], | |
| [ 1, 2, 3, 29 ], | |
| [ 1, 2, 3, 5, 6, 9, 29 ] | |
| ] | |
| } |
| "use strict"; | |
| module.exports = (a, b) => { | |
| let c = [], | |
| i = 0, | |
| j = 0, | |
| last = null; | |
| while (i < a.length && j < b.length) { | |
| if (a[i] < b[j]) { | |
| if (a[i] != last) c.push(last = a[i]); | |
| i++; | |
| } else { | |
| if (b[j] != last) c.push(last = b[j]); | |
| j++; | |
| } | |
| } | |
| return c.concat((i != a.length) ? (a[i] != last) ? a.slice(i) : [] : (b[j] != last) ? b.slice(j) : []); | |
| }; |
| { | |
| "name": "merge-arrays", | |
| "version": "1.0.0", | |
| "author": "Radek Stepan <[email protected]>", | |
| "main": "index.js", | |
| "devDependencies": { | |
| "chai": "^3.5.0", | |
| "mocha": "^2.4.5" | |
| }, | |
| "scripts": { | |
| "test": "./node_modules/.bin/mocha test.js --ui exports --bail --reporter spec" | |
| } | |
| } |
| "use strict"; | |
| let assert = require('chai').assert; | |
| let lib = require('./index.js'); | |
| let fix = require('./fixtures.json'); | |
| for (let i in fix) { | |
| exports[`test ${i}`] = (done) => { | |
| assert.deepEqual(lib.apply(null, fix[i]), fix[i][2]); | |
| done(); | |
| }; | |
| } |