题解 | #根据包名,在指定空间中创建对象#
根据包名,在指定空间中创建对象
https://www.nowcoder.com/practice/a82e035501504cedbe881d08c824a381
思路:题目意思是,a.b.c.d,即在a属性值中包含b属性,而在b属性值中又包含c属性,而在c属性值中又包含d属性,因为对象不仅可以使用obj[key],还可以使用obj.key。首先使用split方法以.分割sPackage得到属性名数组arr,然后使用tmp表示当前对象oNamespace,接着遍历arr,分别判断属性名对应的属性值是否的对象类型,如果不是则将其赋值为对象,同时将当前属性值作为下一次的对象。
function namespace(oNamespace, sPackage) { //{a: {test: 1, b: {c: {d: {}}}}} //a.b.c.d let arr=sPackage.split(".") let tmp=oNamespace for(let v of arr) { //let k of arr k是元素值 //let k in arr k是下标 //object是小写的喔! if(typeof tmp[v] !== "object") tmp[v]={} //将当前值作为下一次的遍历空间 tmp=tmp[v] } }
总结:let k of arr k是元素值,let k in arr k是下标,对象类型object是小写的喔。
#根据包名,在指定空间中创建对象#前端js面试 文章被收录于专栏
前端js面试,帮助你更好的理解js。