JSFiddle - React, Tailwind, and code Playground
by Akihiko Kusanagi
JavaScript
function resolve(object, key) {
let first = key.split(/\.|(?=\[)/)[0];
const rest = key.slice(first.length).replace(/^\./, '');
if (Array.isArray(object) && first.match(/^\[-?\d+\]$/)) {
first = +first.slice(1, -1);
if (first < 0) {
first = object.length + first;
}
}
if (first in object && rest) {
return resolve(object[first], rest);
}
return object[first];
}
const obj = {c:[{a: 'aaa'}, {a: 'bbb'}]}
alert(resolve(obj, 'c[-1].a'))