算法-----数组生成对象

今天和朋友聊天,聊到了面试,就和我分享一个没做出来的算法面试题,如下所示:

   var a = [
            '/a/2/c',
            '/a/b',
            '/d/2',
        ]
     // 生成
	{
		a:{
		  2:{
		    c:{}
		  },
		  b:{},
		 d:{
		   2:{}
		 }
	}

仔细看过之后,这道题其实就是考验引用类型的特性,指针的问题,和生成链表道理是一样的,解法如下:

        function result(arr) {
            let obj = {}
            let currentObj = obj
            for(let i = 0,len=arr.length;i<len;i++){
                let item = arr[i].split("/").slice(1)
                for(let j=0,lens=item.length;j<lens;j++){
                    let key = item[j]
                    if(!currentObj[key]){
                        currentObj[key] = {}
                    }
                    currentObj = currentObj[key]
                }
                currentObj = obj
            }
            return obj
        }

自我感觉不是最优解,欢迎大家~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值