Hitman_99
Hitman_99

Reputation: 2282

How can I find key in JavaScript Object when his depth is unknown?

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 ?

Upvotes: 4

Views: 5011

Answers (2)

JaredPar
JaredPar

Reputation: 755041

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

Upvotes: 8

gion_13
gion_13

Reputation: 41533

function hasKey(obj,key){
    if(key in obj)
        return true;
    for(var i in obj)
        if(hasKey(obj[i],key))
            return true;
    return false;
}

ex:

alert(hasKey({a:{b:{c:{d:{e:{f:{g:{h:{i:{}}}}}}}}}},'i'));

Upvotes: 3

Related Questions