Searching an array or object for values that match a dynamic set of criteria based on nested and deeply nested attributes, written for a Redux reducer but could be used for anything, demo below. Example JSON based on a playlist of songs from the following games:

Example

Try filters like copyrightYear:1995,dumpedBy:Datschge or gameTitle:Super Mario RPG, or publisherName:Square,dumpedWith:Higan

Code / State

// Filter Predicates
const special = {
  dumpedBy: ['dumper', 'name'],
  dumpedWith: ['dumper', 'system'],
};

// Parse Filters
const filters = R.fromPairs(R.map(R.split(':'), R.split(',', value)));
const keyFilters = R.omit(['dumpedBy', 'dumpedWith'], filters);
const specialFilters = R.pick(['dumpedBy', 'dumpedWith'], filters);

// TODO: Convert this to Ramda.
let predicates = [];
Object.keys(keyFilters).forEach((key) => {
  predicates.push(R.propEq(key, keyFilters[key]));
});

Object.keys(specialFilters).forEach((key) => {
  predicates.push(R.pathEq(special[key], specialFilters[key]));
});

const values = R.values(
  R.map(
    R.prop('gameTitle'),
    R.filter(
      R.allPass(predicates)
    )(state)
  )
);
{
  'sck-main-menu': {
    songTitle: 'Main Menu',
    gameTitle: 'Shin Chou Kouki',
    copyrightYear: '1993',
    publisherName: 'Yanoman',
    dumper: {
      name: 'KungFuFurby',
      system: 'Hardware',
    },
    artist: {
      name: 'Masamichi Iwasaki',
    },
  },
  'sbb1-title-screen': {
    songTitle: 'Title Screen',
    gameTitle: 'Super Black Bass',
    copyrightYear: '1992',
    publisherName: 'Starfish, Hot-B',
    dumper: {
      name: 'Locke_gb7',
      system: 'Higan',
    },
    artist: {
      name: 'Cube',
    },
  },
  'gga3-ackman-and-tenshi': {
    songTitle: 'Ackman and Tenshi',
    gameTitle: 'Go Go Ackman 3',
    copyrightYear: '1995',
    publisherName: 'Banpresto',
    dumper: {
      name: 'Dais',
      system: 'Snes9x',
    },
    artist: {
      name: "K'Mixa",
    },
  },
  'ct-presentiment': {
    songTitle: 'Presentiment',
    gameTitle: 'Chrono Trigger',
    copyrightYear: '1995',
    publisherName: 'Square',
    dumper: {
      name: 'YK',
      system: 'ZSNES',
    },
    artist: {
      name: 'Yasunori Mitsuda',
    },
  },
  'smr-happy-adventure': {
    songTitle: 'Happy Adventure, Delightful Adventure',
    gameTitle: 'Super Mario RPG',
    ost: 'Super Mario RPG Original Sound Version (PSCN-5047)',
    copyrightYear: '1996',
    publisherName: 'Nintendo, Square',
    dumper: {
      name: 'Datschge',
      system: 'Higan',
    },
    artist: {
      name: 'Yoko Shimomura',
    },
  },
  'sd2-fear-of-the-heavens': {
    songTitle: 'Fear of the Heavens',
    gameTitle: 'Secret of Mana',
    ost: 'Seiken Densetsu 2 Original Sound Version (PSCN-5030)',
    copyrightYear: '1993',
    publisherName: 'Square',
    dumper: {
      name: 'Datschge',
      system: 'Hardware',
    },
    artist: {
      name: 'Hiroki Kikuta',
    },
  },
  'sd3-not-awaken': {
    songTitle: 'Not Awaken',
    gameTitle: 'Seiken Densetsu 3',
    ost: 'Seiken Densetsu 3 Original Sound Version (PSCN-5026~8)',
    copyrightYear: '1995',
    publisherName: 'Square',
    dumper: {
      name: 'Datschge',
      system: 'Higan',
    },
    artist: {
      name: 'Hiroki Kikuta',
    },
  },
}