当他的深度未知时,如何在JavaScript Object中找到键?

时间:2011-09-15 20:59:51

标签: javascript object

如果我有一个像这样的javascript对象:{a : { b: { c: { ... }}}},我怎样才能找到对象中是否有'x'键及其值?

2 个答案:

答案 0 :(得分:8)

只要他们不担心循环引用,您就可以执行以下操作

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;
}

注意:这将直接在此对象或其原​​型链中搜索属性“x”。如果您特别希望将搜索限制为此对象,则可以执行以下操作

if (obj.hasOwnProperty('x')) {
  return obj['x'];
}

重复递归调用findX

的模式

答案 1 :(得分:3)

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

例如:

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