canner
Version:
Build CMS in few lines of code for different data sources
34 lines (29 loc) • 656 B
JavaScript
import {
forEach
} from 'lodash';
export function flattenItems(items) {
const fields = [];
function loop(item, keyName = '') {
if (item.keyName) {
keyName = `${keyName}${keyName ? '.' : ''}${item.keyName}`;
}
if (item.items && !item.items.type) {
forEach(item.items, item => {
loop(item, keyName);
});
} else if (item.items && item.items.type && item.items.items) {
forEach(item.items.items, item => {
loop(item, keyName);
})
} else {
fields.push({
...item,
keyName
});
}
}
forEach(items, item => {
loop(item, '');
});
return fields;
}