题解 | #根据包名,在指定空间中创建对象#
根据包名,在指定空间中创建对象
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,并把当前层传递到下一层