Answer Consider an object from which we want to retrive properties. const obj = { earth: { level: { one: 'soft mud and rocks' } }, vibrations: [1, 2, { range: 'medium' }], }; Use [...].map() for each selector, "vibrations[2].range".replace() to replace square brackets with dots. Use "earth.level.one".split('.') to split each selector. Use [...].filter() to remove empty values and [...].reduce() to get the value indicated by each selector. const get = (_obj, selectors) => selectors.map(s => s.replace(/\[([^\[\]]*)\]/g, '.$1.') .split('.') .filter(t => t !== '') .reduce((prev, cur) => prev && prev[cur], _obj) ); Example get(obj, 'earth.level.one', 'vibrations[0]', 'vibrations[2].range'); // ['soft mud and rocks', 1, 'medium'] Share this:TwitterFacebookRedditLinkedInWhatsAppPrintTumblr Related