Skip to content

Instantly share code, notes, and snippets.

@gregberns
Created June 7, 2018 18:29
Show Gist options
  • Save gregberns/619359f6fe3d599844969b10f216de45 to your computer and use it in GitHub Desktop.
Save gregberns/619359f6fe3d599844969b10f216de45 to your computer and use it in GitHub Desktop.
Implementation of Map, Filter, and Reduce on an Object to iterate through its keys
let map = (f, o) => {
//o must be an object
let keys = Object.keys(o);
let ret = {};
for (let i = 0; i <= keys.length - 1; i++) {
let key = keys[i];
let val = o[key];
ret[key] = f(val, key);
}
return ret;
}
let filter = (f, o) => {
//o must be an object
let keys = Object.keys(o);
let ret = {};
for (let i = 0; i <= keys.length - 1; i++) {
let key = keys[i];
let val = o[key];
if (f(val, key)) {
ret[key] = val;
}
}
return ret;
}
let reduce = (f, a, o) => {
let keys = Object.keys(o);
let acc = a;
for (let i = 0; i <= keys.length - 1; i++) {
let key = keys[i];
let val = o[key];
acc = f(acc, val, key);
}
return acc;
}
let o = {
a: "hello",
b: "world",
c: "!"
}
let p = map((v, k) => `${v}!(${k})`, o)
console.log(p)
let q = filter((v, k) => (v === 'hello' || k === 'b'), o)
console.log(q)
let r = reduce((acc, v, k) => `${acc} ${v}`, "", o)
console.log(r)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment