我正在创建一个函数,我在变量中给出了对象路径。我从数据库中获取数据后使用此功能。
function find(object, path, cb) {
return cb(object[path]);
}
var object = {user:{firstname:"bob"}};
find(object, "user", function(data){});
这适用于对象第一级上的对象,但如果我想要第二级或更高级别的对象,该怎么办:
"user.firstname"
当我尝试通过find函数运行它时,它会给出一个未定义的错误。我怎样才能改善我的功能?
答案 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)});