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

Hit*_*_99 4 javascript object

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

Jar*_*Par 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;
}
Run Code Online (Sandbox Code Playgroud)

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

if (obj.hasOwnProperty('x')) {
  return obj['x'];
}
Run Code Online (Sandbox Code Playgroud)

并重复递归调用的模式 findX

  • 请注意,这也将搜索原型链.如果不需要,请在其上抛出几个[`hasOwnProperty`](http://es5.github.com/#x15.2.4.5)调用. (2认同)