У меня есть рекурсивная функция, чтобы пройти через объект и получить то, что нужно, используя строку пути, такую как jsonObj.object.item.value
.Идея состоит в том, чтобы как-то обновить его для поддержки массивов.
const getValue = function(pathVar, obj) {
obj = obj || x;
// get very first node and the rest
let [node, restNodes] = pathVar.split(/\.(.+)/, 2)
// get interim object
ret = obj[node];
if(ret === undefined) return undefined;
// pass rest of the nodes further with interim object
if(restNodes) return getValue(restNodes, ret);
return ret;
};
Прямо сейчас на каждой итерации простое регулярное выражение разбивает строку пути, такую как jsonObj.object.item.value
, на jsonObj
и object.item.value
идеяэто добавить поддержку массива здесь, чтобы я мог делать преобразования, такие как
car.engine.something
=> car
и engine.something
wheels[2].material.name
=> wheels
и [2].material.name
[2].material.name
=> 2
и material.name
car.wheels[4]
=> car
и wheels[4]
Есть идеи как это сделать?