Gets the target value in a nested JSON object, based on the given key.
- Use the 
inoperator to check iftargetexists inobj. - If found, return the value of 
obj[target]. - Otherwise use 
Object.values()andArray.prototype.reduce()to recursively calldigon each nested object until the first matching key/value pair is found. 
代码实现
const dig = (obj, target) =>
  target in obj
    ? obj[target]
    : Object.values(obj).reduce((acc, val) => {
        if (acc !== undefined) return acc;
        if (typeof val === 'object') return dig(val, target);
      }, undefined);
const data = {
  level1: {
    level2: {
      level3: 'some data'
    }
  }
};
dig(data, 'level3'); // 'some data'
dig(data, 'level4'); // undefined
翻译自:https://www.30secondsofcode.org/js/s/get-nested-value-in-object