题解 | #根据包名,在指定空间中创建对象#
根据包名,在指定空间中创建对象
https://www.nowcoder.com/practice/a82e035501504cedbe881d08c824a381
function namespace(oNamespace, sPackage) {
let arr = sPackage.split('.');
if(arr.length<=1) return {};
if (oNamespace.hasOwnProperty(arr[0])) {
namespace(oNamespace[arr[0]], arr.slice(1).join('.'));
} else{
oNamespace[arr[0]] = {};
oNamespace[arr[0]] = { [arr[1]]: namespace(oNamespace[arr[0]], arr.slice(1).join('.')) };
return oNamespace[arr[0]]
}
}
/**
* 传入参数(oNamespace, sPackage) 中间值 返回值
* { a: { a: 1 } } 'a.b.c.d.e.f.g'
* { a: 1 } b.c.d.e.f.g ======> {a:1, b:...} { b:... }
* { b:... } c.d.e.f.g =======> { b: { c:... } } { c:... }
*/
- 判断最后一个值,返回{};
- 含有当前属性,执行下一层递归
- 将值赋予oNamespace,并把当前层传递到下一层
