Files
30-seconds-of-code/snippets/dig.md
2022-05-02 18:51:12 +03:00

953 B

title, tags, expertise, cover, firstSeen, lastUpdated
title tags expertise cover firstSeen lastUpdated
Get nested value in object object,recursion intermediate blog_images/brown-bird.jpg 2018-07-08T23:06:24+03:00 2020-10-19T18:51:03+03:00

Gets the target value in a nested JSON object, based on the given key.

  • Use the in operator to check if target exists in obj.
  • If found, return the value of obj[target].
  • Otherwise use Object.values() and Array.prototype.reduce() to recursively call dig on 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