JSFiddle - React, Tailwind, and code Playground
JavaScript
const array = [
'ADMIN_URL_REGEXP',
'BASE_PATH',
'appName',
'defaultToolConf',
'defaultToolConf.graph',
'defaultToolConf.graph.graphApiConf',
'defaultToolConf.graph.graphApiConf.markerCampaignsUrl',
'defaultToolConf.graph.graphApiConf.markerUrl',
'defaultToolConf.graph.graphApiConf.ndviUrl',
'defaultToolConf.graph.graphLineColors',
'defaultToolConf.query',
'defaultToolConf.query.canExportKml',
'defaultToolConf.query.isExportEnabled',
'defaultToolConf.query.isResizable',
'defaultToolConf.test',
'defaultToolConf.toolsPermissionsPath',
'token',
'token.format',
'token.key',
'token.paths'];
function arrayToObject(arr) {
let newObject = {};
arr.forEach(function(prop){
newObject[prop] = {};
});
for (const key in newObject) {
let str = key.split('.');
if(str.length === 1) {
newObject[str[str.length-1]] = {};
} else if (str.length === 2) {
newObject[str[str.length-2]][str[str.length-1]] = {};
} else if (str.length === 3) {
newObject[str[str.length-3]][str[str.length-2]][str[str.length-1]] = {};
} else if (str.length === 4) {
newObject[str[str.length-4]][str[str.length-3]][str[str.length-2]][str[str.length-1]] = {};
}
}
return newObject;
}
let newObject = arrayToObject(array);
console.log(newObject);