const find = (data, test, key) =>
test(key, data)
? data
: data === Object(data)
? Object.entries(data).reduce((found, n) =>
found !== null ? found : find(n[1], test, n[0])
, null)
: null;function find(data, test) {
for (const stack = [ [ , data ] ]; stack.length;) {
const [ k, v ] = stack.pop();
if (test(k, v)) {
return v;
} else if (v instanceof Object) {
stack.push(...Object.entries(v).reverse());
}
}
return null;
}const value = find(вложенный_объект, k => k === 'ключ'); const findByKey = (object, key) => {
if (object instanceof Array) {
for (let i = 0; i < object.length; i++) {
let result = findByKey(object[i], key);
if (result !== null) {
return result;
}
}
return null;
}
for (let p in object) {
if (p === key) {
return object[p]
} else if (typeof object[p] === 'object') {
let result = findByKey(object[p], key);
if (result !== null) {
return result;
}
}
}
return null;
}
findByKey(someObject, someKey)