const response1 = { data: { users: [ {}, { name: 'Oliver', surname: 'Max', }, ], }, }; const response2 = [ { data: { users: [ {}, { name: 'Oliver', surname: 'Max', }, ], }, }, ]; const get = (data, path, defaultValue = undefined) => path ?.split(/\.|\[|\]|'|"/) .filter(Boolean) .reduce( (acc, key) => (acc = acc?.hasOwnProperty(key) ? acc[key] : defaultValue), data, ); console.log(get(response1, 'data.users[1].name', null)); console.log(get(response2, '[0]["data"].users[1].surname', null));