clean functional programming
runnable answer for https://softwareengineering.stackexchange.com/a/350583/161652
by b0nyb0y
JavaScript
class PagesList {
constructor() {
this.items = {};
}
addPage(key, val) {
this.items[key] = val;
}
}
const apiData = {
pages: {
foo: 'data1',
arrayOfBars: [
{ name: 'data2', data: 'data2' },
{ name: 'data3', data: 'data3' }
],
customBazes: [
{ id: 'data4', content: 'data4' },
{ id: 'data5', content: 'data5' }
],
}
};
////////////////////////////////////////////////////////////////////////////////
const processFooPages = (foo) => foo ? [['foo', foo]] : [];
const processBarPages = (bar) => bar ? bar.map(page => [page.name, page.data]) : [];
const processBazPages = (baz) => baz ? baz.map(page => [page.id, page.content]) : [];
const list = new PagesList();
const pages = [].concat(
processFooPages(apiData.pages.foo),
processBarPages(apiData.pages.arrayOfBars),
processBazPages(apiData.pages.customBazes)
);
pages.forEach(([pageName, pageContent]) => list.addPage(pageName, pageContent));
alert(JSON.stringify(list.items, null, 2));