Skip to content

Instantly share code, notes, and snippets.

@bennidhamma
Created October 12, 2017 16:25
Show Gist options
  • Save bennidhamma/99f19a524d3500506eea2861f48a582d to your computer and use it in GitHub Desktop.
Save bennidhamma/99f19a524d3500506eea2861f48a582d to your computer and use it in GitHub Desktop.
Who wants some sprinkles?? @El-Gregory does!!
Array.prototype.sprinkle = function sprinkle(every, makeSprinkle) {
let numSprinkles = 0
return this.reduce((a, v, i) => {
a.push(v)
let doSprinkle = false
if (typeof every === 'function') {
doSprinkle = every(i, v, numSprinkles)
} else {
doSprinkle = i && i % every === 0
}
if (doSprinkle) {
numSprinkles++
const aSprinkle = (makeSprinkle(i, v, numSprinkles))
if (aSprinkle) {
a.push(aSprinkle)
}
}
return a
}, [])
}
@bennidhamma
Copy link
Author

use it like:

var arr = [1, 2, 3]
arr.sprinkle(i => i % 2, x => x * 2)

outputs:

[1, 2, 4, 3]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment