Skip to content

Instantly share code, notes, and snippets.

@kanian
Last active May 21, 2019 16:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kanian/acf4a613044007e9c3f48c9e25339a6b to your computer and use it in GitHub Desktop.
Save kanian/acf4a613044007e9c3f48c9e25339a6b to your computer and use it in GitHub Desktop.
function take(n,xs){
let it = typeof xs.next === 'undefined' ? makeIterator(xs) : xs
let taken = []
let nxt
while(n > 0){
if((nxt = it.next()).done)
return taken
taken.push(nxt.value)
n--
}
return taken
}
function makeIterator(array) {
let nextIndex = 0;
return {
next: function() {
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{done: true};
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment