如果我有一个对象:
var dog= {
name: "Max",
age: 5,
sex: undefined,
details: {
color: "black",
breed: undefined
}
}
我想获取具有未定义值的属性的路径。我如何遍历所有属性,包括嵌套属性?
目前,我有一个没有嵌套属性的对象的 vanilla js 方法:
function getUndefinedPaths(o, name) {
var paths = [];
for (var prop in o) {
if (o[prop] === undefined) {
paths += name + "." + prop + "\n";
}
}
return paths;
}
// getUndefinedPaths(dog, "dog") only returns "dog.sex" and not "dog.details.breed" which is also undefined.
我卡住了。有人可以帮助解决如何在 js 对象的嵌套属性中获取那些未定义值的路径吗?我只是在 vanilla javascript 中尝试这个。提前致谢。
最佳答案
你可以像这样使用递归函数:
function getPath(obj, path) {
var props = [];
for(var key in obj) {
if(obj[key] === undefined) {
props.push(path + '.' + key);
}
if(obj[key] instanceof Object) {
props.push.apply(props, getPath( obj[key], path + '.' + key ));
}
}
return props;
}
var path = getPath(dog, 'dog');
这将返回一个 Array
路径到 undefined
属性
如有必要,您可以对生成的“Array”使用 join 来获取 String
:
console.log(path.join('\n'));
关于javascript - 遍历嵌套的javascript对象以识别空值属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550376/