故心故心故心故心小故冲啊
文章目录
在写代码的时候遇到一个问题,在访问一个对象嵌套对象在嵌套对象,例如
var obj = {
a:{
c:123
}
}
获取c的值
obj.a.c //123
那么如果只能通过obj[ ] 的方式应该如何去获取呢?
这样获取吗?
obj['a.c'] //错误
那么如何实现obj[ ] 这样的方式获取呢?
可以从上面可以知道obj.a.c 是可以获取到值的,那么我们就可以通过一个lookup函数来变成这样
/*
*obj 传入的对象
*keyName 也就是a.c这样的形式
*/
function lookup(obj, keyName) {
//首先判断keyName是否含有.
if (keyName.indexOf('.') != -1 && keyName != '.') {
//有就拆分
let keys = keyName.split(".");
let temp = obj;
for (let i=0; i < keys.length; i++) {
temp = temp[keys[i]];
}
//循环结束后返回temp
return temp;
}
//没有. 就直接使用
return obj[keyName];
}
下面是试用一下这个函数是否可行?
var obj = {
a:{
c:{
d:123
}
}
}
lookup({a:{c:{d:123}}},'a.c.d') //123
需求已经实现了
那么最后贡献上对象的深层次获取 lookup代码
function lookup(obj, keyName) {
//首先判断keyName是否含有.
if (keyName.indexOf('.') != -1 && keyName != '.') {
//有就拆分
let keys = keyName.split(".");
let temp = obj;
for (let i=0; i < keys.length; i++) {
//逐渐访问
temp = temp[keys[i]];
}
//循环结束后返回temp
return temp;
}
//没有. 就直接使用
return obj[keyName];
}