Я пытаюсь написать рекурсивную функцию, которая читает строку с вложенными круглыми скобками и превращает ее в массив с вложенными массивами. Например: (hello(hi)are(yo(u)))
=> ["hello",["hihow"],"are"["yo",["u"]]]
(вы можете спросить, почему я помещаю один элемент в массив. Я планирую разделить строки разделителями #
, но я сделаю что после того, как я смогу хотя бы вложить отдельные строки)
Мой код на данный момент:
const preProcessString = element => {
var elementComponents = [];
var part = "";
var rS;
if (
element.indexOf("(") < element.indexOf(")") &&
element.indexOf("(") !== -1
) {
part = element.slice(0, element.indexOf("("));
elementComponents.push(part);
rS = preProcessString(element.substr(element.indexOf("(") + 1));
console.log(rS[0]);//Am able to print the exact value that is causing the error
elementComponents.push(rS[0]);//Causing the "cannot read property of undefined error"
element = rS[1];
} else {
part = element.slice(0, element.indexOf(")"));
elementComponents.push(part);
return [elementComponents, element.substr(element.indexOf(")") + 1)];
}
};
console.log(preProcessString("(hello(hi)are(yo(u)))"));
Я получаю эту ошибку:
ParseStepFile.js:272 Uncaught TypeError: Cannot read property '0' of undefined
at preProcessString (ParseStepFile.js:272)
Но я могу распечатать значение (и это ожидаемое значение) " undefined »в операторе console.log прямо перед строкой, вызывающей ошибку. Как это возможно? Что я могу сделать, чтобы это исправить? Любая помощь приветствуется!