如何递归创建多层嵌套结构的JS对象

var arr=['a','b','c','d','e','f','g'], obj={};
obj['a']?null:obj['a']={};
obj['a']['b']?null:obj['a']['b']={};
obj['a']['b']['c']?null:obj['a']['b']['c']={};
obj['a']['b']['c']['d']?null:obj['a']['b']['c']['d']={};
// 。。。

数组arr长度是动态变化的,
有什么递归的方法可以实现创建上面这种多层嵌套结构的JS对象,
“['a']['b']['c']”这一串东西是否可以存为某种变量?
谢谢。

img

        var arr=['a','b','c','d','e','f','g'], obj={};
        function forMats(index,item) {
            if(index == arr.length) return;
            console.log(item)
            item[arr[index]]?null:item[arr[index]]={};
            forMats(index+1, item[arr[index]])
        }
        forMats(0, obj)
        console.log(obj)