Skip to content

Instantly share code, notes, and snippets.

@Zorgatone
Last active July 30, 2018 18:53
Show Gist options
  • Save Zorgatone/3d67f1bde6f48bc7d3293a1a1696874f to your computer and use it in GitHub Desktop.
Save Zorgatone/3d67f1bde6f48bc7d3293a1a1696874f to your computer and use it in GitHub Desktop.
Iterable Objects
Object.prototype[Symbol.iterator] = function() {
let obj = this;
let keyit = Object.keys(obj)[Symbol.iterator]();
return {next() {
let {done, value} = keyit.next();
if (done) {
return {done};
}
return {done, value: {
key: value, value: obj[value]
}};
}};
};
function iterize(obj, type) {
obj[Symbol.iterator] = function() {
let keyit = Object.keys(obj)[Symbol.iterator]();
return {next() {
let {done, value} = keyit.next();
if (done) {
return {done};
} else if(type && type === "array") {
return {done, value: [
value,
obj[value]
]};
} else if(type && type === "object") {
return {done, value: {
key: value, value: obj[value]
}};
}
return {done, value: obj[value]};
}};
};
return obj;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment