Skip to content

Instantly share code, notes, and snippets.

@thurt
Last active May 8, 2016 05:11
Show Gist options
  • Save thurt/89848f5b54893950a91c7ba5c4278871 to your computer and use it in GitHub Desktop.
Save thurt/89848f5b54893950a91c7ba5c4278871 to your computer and use it in GitHub Desktop.
Implementation for Object.entries
// Alt 1
Object.prototype.entries = function() {
let keys = Reflect.ownKeys(this).values()
return {
[Symbol.iterator]() {
return this
},
next: () => {
let { done, value: key } = keys.next()
if (!done) {
return { value: [key, this[key]] }
}
return { done }
}
}
}
// Alt 2
Object.prototype.entries = function() {
let key
let keys = Reflect.ownKeys(this)
return {
[Symbol.iterator]() {
return this
},
next: () => {
if ((key = keys.shift()) !== undefined) {
return { value: [key, this[key]] }
}
return { done: true }
}
}
}
// Alt 3 -- So simple
Object.prototype.entries() {
return Reflect.ownKeys(this).map(key => [key, this[key]])
}
// Example Usage
for (let [key, value] of { a: 1, b: 2, c: 3 }.entries()) {
console.log(key, ':', value)
}
// a : 1
// b : 2
// c : 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment