Я отредактировал ответ Брайана Даунинга, чтобы напечатать иерархию для глубоких объектов:
function searchObj (obj, query, prefix /*not to be set*/) {
prefix = prefix || "---";
var printKey;
for (var key in obj) {
var value = obj[key];
if (typeof value === 'object') {
if (searchObj(value, query, prefix + "|---")) {
console.log(prefix + ' ' + key);
printKey = true;
}
}
if (value === query) {
console.log(prefix + ' ' + key + ' = ' + value);
return true;
}
}
return printKey;
}
Затем запустите searchObj(testObj, 'testValue');