前端学习之编程题系列:(十)根据包名,在指定空间中创建对象

213 阅读1分钟

写在前面

本题目来自牛客网,已经成功通过测试。笔者刚刚开始学习前端,准备在掘金记录下自己的学习过程,欢迎和我一样准备入门前端的小伙伴们一起交流学习,也欢迎各位大佬批评指正~~~

题目描述

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

示例

输入描述

namespace({a: {test: 1, b: 2}}, 'a.b.c.d')

输出描述

{a: {test: 1, b: {c: {d: {}}}}}

题解

function namespace(oNamespace, sPackage) {
    //1. 按照"."把包名切割为数组
    let arr = sPackage.split('.')
    //2. 遍历数组
    arr.forEach(ele => {
        //3. 指定空间中没有包名对应的属性时,创建一个以包名为属性名以空对象为值的属性
        //   或者有包名对应的属性但是该属性不是对象类型时,将该属性赋值为空对象
        if(typeof oNamespace[ele] !== "object"){
            oNamespace[ele] = {}
        }
        //4. 对空间对象不断进行迭代
        oNamespace = oNamespace[ele]
    })
    return oNamespace
}