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

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

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:... }
 */
  1. 判断最后一个值,返回{};
  2. 含有当前属性,执行下一层递归
  3. 将值赋予oNamespace,并把当前层传递到下一层
全部评论

相关推荐

点赞 评论 收藏
分享
永远年轻_永远热泪盈眶:有一个漏了,没打码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务