Вы можете создать функцию, которая преобразует строку, разделенную точками, в соответствующий глубоко вложенный объект, а затем сопоставит с ним ваш входной массив строк. Мое решение является итеративным, хотя я думаю, что оно также может быть сделано рекурсивно.
var arr = ["Request.name","Request.name.first","Request.name.first.last"];
function createObjFromStr(str) {
return str.split('.').reduceRight((all, key, i, arr) => {
if (i === arr.length - 1) {
all = {[key]: 0};
} else {
all[key] = Object.assign({}, all);
Object.keys(all).forEach(k => {
if (k !== key) delete all[k];
});
}
return all;
}, {});
}
const arrayOfObjects = arr.map(createObjFromStr);
console.log(arrayOfObjects);