function safeGet(target, selector) {
return selector
.replace(/\[([^\[\]]*)\]/g, '.$1')
.split('.')
.reduce((obj, cur) => obj && obj[cur], target)
}
const a = {
b: [
{
t1: 1,
t2: 2,
},
{
t1: 1,
t2: 2,
},
],
c: {
d: 1,
e: 2,
}
}
console.log(safeGet(a, 'b[3].t2'))