从具有变量的对象获取第二级值

时间:2015-05-26 08:28:56

标签: javascript

我正在创建一个函数,我在变量中给出了对象路径。我从数据库中获取数据后使用此功能。

function find(object, path, cb) {
  return cb(object[path]);
}

var object = {user:{firstname:"bob"}};
find(object, "user", function(data){});

这适用于对象第一级上的对象,但如果我想要第二级或更高级别的对象,该怎么办:

"user.firstname"

当我尝试通过find函数运行它时,它会给出一个未定义的错误。我怎样才能改善我的功能?

2 个答案:

答案 0 :(得分:1)

您可以通过split function手动执行并迭代执行此模式:

var properties = path.split(".");
var value = obj;
for(prop of properties)
{
  value = value[prop];
}

答案 1 :(得分:1)

您可以使您的查找功能递归。除了使路径成为数组而不是字符串之外,您还可以选择为多个图层执行此操作。

function find (object, path, cb) {
    if (path.length > 1) return find(object[path.shift()], path, cb);
    return cb(object[path.pop()]);
}
var object = {user: {firstname:"bob"}};
find(object, ["user","firstname"], function (data){console.log(data)});