我怎么能找到关键在JavaScript对象时,他的深度是未知的

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

本文关键字:深度 未知 对象 JavaScript 怎么能      更新时间:2023-09-26

如果我有一个这样的javascript对象:{a : { b: { c: { ... }}}},我怎么能找到如果有一个'x'键在对象和它的值是什么?

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

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

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'));