题解 | #根据包名,在指定空间中创建对象#

根据包名,在指定空间中创建对象

https://www.nowcoder.com/practice/a82e035501504cedbe881d08c824a381

思路:题目意思是,a.b.c.d,即在a属性值中包含b属性,而在b属性值中又包含c属性,而在c属性值中又包含d属性,因为对象不仅可以使用obj[key],还可以使用obj.key。首先使用split方法以.分割sPackage得到属性名数组arr,然后使用tmp表示当前对象oNamespace,接着遍历arr,分别判断属性名对应的属性值是否的对象类型,如果不是则将其赋值为对象,同时将当前属性值作为下一次的对象。

function namespace(oNamespace, sPackage) {
    //{a: {test: 1, b: {c: {d: {}}}}}
    //a.b.c.d
    let arr=sPackage.split(".")
    let tmp=oNamespace
    for(let v of arr)
    {
        //let k of arr k是元素值
        //let k in arr k是下标
        //object是小写的喔!
        if(typeof tmp[v] !== "object")
            tmp[v]={}
        //将当前值作为下一次的遍历空间
        tmp=tmp[v]
    }
}

总结:let k of arr k是元素值,let k in arr k是下标,对象类型object是小写的喔。

#根据包名,在指定空间中创建对象#
前端js面试 文章被收录于专栏

前端js面试,帮助你更好的理解js。

全部评论

相关推荐

09-13 17:43
已编辑
北京化工大学 硬件开发
易才一飞:感觉项目写细节一些吧,掌握技能和校内经历感觉占比太大,而且这是找嵌软还是硬件呢,似乎大家都说要有针对的写相关技术才好吧
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务