If I have an javascript object like this: {a : { b: { c: { ... }}}}, how can I find if there is an 'x' key in the object and what it's value ?
2 Answers
So long as their is no fear of cyclic references you could do the following
function findX(obj) {
var val = obj['x'];
if (val !== undefined) {
return val;
}
for (var name in obj) {
var result = findX(obj[name]);
if (result !== undefined) {
return result;
}
}
return undefined;
}
Note: This will search for the property 'x' directly in this object or it's prototype chain. If you specifically want to limit the search to this object you can do so doing the following
if (obj.hasOwnProperty('x')) {
return obj['x'];
}
And repeating for pattern for the recursive calls to findX
2 Comments
T.J. Crowder
Note that this will also search the prototype chain. If that's not desired, throw a couple of
hasOwnProperty calls at it.JaredPar
@T.J. Crowder searching the prototype was my intent here as it seemed the OP just wanted to know if 'x' existed anywhere. I will update my answer to make that explicit
xkeys? E.g.{a:{x:1}, b:{x:2}}