diff --git a/lib/intersperse.js b/lib/intersperse.js index c2224ff..16293d4 100644 --- a/lib/intersperse.js +++ b/lib/intersperse.js @@ -1,11 +1,12 @@ module.exports = intersperse; -function intersperse(arr, obj) { +function intersperse(arr, value) { if (!arr.length) return []; if (arr.length === 1) return arr.slice(0); var items = [arr[0]]; for (var i = 1, len = arr.length; i < len; ++i) { + var obj = typeof value === 'function' ? value(arr[i - 1], arr[i], i) : value; items.push(obj, arr[i]); } diff --git a/package.json b/package.json index ea09ef1..f327d39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "intersperse", - "version": "1.0.0", + "version": "1.1.0", "description": "Add an object to an array between each element", "main": "lib/intersperse.js", "directories": { diff --git a/test/test.js b/test/test.js index ac28f6f..c737fe9 100644 --- a/test/test.js +++ b/test/test.js @@ -27,4 +27,23 @@ describe('intersperse', function () { assert.deepEqual(newArr, [1, 'a', 2, 'a', 3]); assert.deepEqual(arr, [1, 2, 3]); }); -}); \ No newline at end of file + + it("should accept function as a parameter", function () { + var arr = [1, 2, 3]; + var newArr = intersperse(arr, function() { + return 'a'; + }); + + assert.deepEqual(newArr, [1, 'a', 2, 'a', 3]); + assert.deepEqual(arr, [1, 2, 3]); + }); + + it("should input previous, next and index values for function", function () { + var arr = [1, 2]; + var newArr = intersperse(arr, function(prev, next, i) { + assert.equal(prev, 1); + assert.equal(next, 2); + assert.equal(i, 1); + }); + }); +});