如果您确切地知道您的值的嵌套级别,那么一个快速的解决方案(如其他答案中所建议的)是可能的。
但是,如果您需要深度遍历搜索,您将需要解决方案的递归版本,例如:
function FindTraverse(data, match)
{
for (var prop in data)
{
if (!data.hasOwnProperty(prop)) continue;
if (data[prop] == match) return true;
if (typeof data[prop] == 'object' && FindTraverse(data[prop], match)) return true;
}
return false;
}
例子:
FindTraverse({a:'Foo',b:'Bar'}, 'Bar') // true
FindTraverse(['Foo','Bar'], 'Bar') // true
FindTraverse([{name:'Foo'},{name:'Bar'}], 'Bar') // true
FindTraverse({a:{name:'FooBar'},b:'Bar'}, 'FooBar') // true
但是,如果您正在寻找更彻底的解决方案,请使用jsTraverse 之类的框架