@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
26 lines (25 loc) • 892 B
JavaScript
export function mapValuesDeep(obj, fn) {
return recurse(obj);
function recurse(obj, prefix = '') {
if (Array.isArray(obj)) {
return obj.map((value, index) => {
if (typeof value === 'object' && value !== null) {
return recurse(value, prefix + `[${index}]`);
}
else {
return fn(prefix + `[${index}]`, value);
}
});
}
else {
return Object.fromEntries(Object.entries(obj).map(([key, value]) => {
if (typeof value === 'object' && value !== null) {
return [key, recurse(value, prefix + (prefix ? '.' : '') + key)];
}
else {
return [key, fn(prefix + (prefix ? '.' : '') + key, value)];
}
}));
}
}
}