JSFiddle - React, Tailwind, and code Playground
by alnitak
JavaScript
function deepMap(obj, f, ctx) {
if (Array.isArray(obj)) {
return obj.map(function(val, key) {
return (typeof val === 'object') ? deepMap(val, f, ctx) : f.call(ctx, val, key);
});
} else if (typeof obj === 'object') {
res = {};
for (var key in obj) {
var val = obj[key];
if (typeof val === 'object') {
res[key] = deepMap(val, f, ctx);
} else {
res[key] = f.call(ctx, val, key);
}
}
return res;
} else {
return obj;
}
}
var out = deepMap({
one: 1,
two: [
{ foo: 'bar' },
{ foos: ['b', 'a', 'r', 's'] },
],
three: [1, 2, 3]
}, function(val, key) {
return (String(val).indexOf('b') > -1) ? 'bobcat' : val;
});
console.log(out);