У меня есть две строки и объект Js
var strArr = '$PARAMS["version"]["config"]$';
var strObj = "$PARAMS.version.config$;
и JS Object
var obj = {
"version": {
"config": {
"prod": "stackoverflow"
}
}
}
Строка может прийти как strArr или strObj, я пытаюсь получить регулярное выражение для извлечения версии и конфигурации (и т. Д.) Из обеих строк и получить значение для этого из Js obj
Например: obj["version"]["config]
Я могу решить эту проблему для strArr, т. Е. '$ PARAMS ["version"] ["config"] $', необходимо изменить регулярное выражение в приведенной ниже функции getVal, чтобы получить работающий для strObj.
Также в функции ниже path может быть либо strArr, либо strObj
function getVal(obj, path) => {
let regex = /\["(.*?)"\]/mg;
let m;
while ((m = regex.exec(path)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
if(typeof obj[m[1]] !== 'undefined') obj = obj[m[1]];
else return obj[m[1]];
}
return obj;
}