我有一个返回对象的递归函数。此对象的深度因输入而异,并且键也依赖于输入。在JSON格式中,对象可以如下所示:
{
a: {
b: {
c: 3 // Keys with an integer value are the target of the search
},
c: 2
}
}
如何找到名为c
或包含整数类型值的键?
答案 0 :(得分:0)
你可以这样做:
function search(obj) {
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
if (prop === "c") {
console.log(obj[prop]); // or whatever you want to do here
} else if (typeof obj[prop] === "object") {
search(obj[prop]);
}
}
}
}
请参阅fiddle
答案 1 :(得分:0)
Lodash非常适合这些:
var val = _(obj).map(function recursive(val, key) {
if (key === 'c')
return val;
else if (typeof val === "object")
return _.map(val, recursive);
}).flatten().value();
Lodash docs:http://lodash.com/docs
jsFiddle:http://jsfiddle.net/JVf6D/2/