写在前面
本题目来自牛客网,已经成功通过测试。笔者刚刚开始学习前端,准备在掘金记录下自己的学习过程,欢迎和我一样准备入门前端的小伙伴们一起交流学习,也欢迎各位大佬批评指正~~~
题目描述
根据包名,在指定空间中创建对象
示例
输入描述
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
}