我試圖編寫一個函數,將括號中包含的單詞提取到自己的數組中,遞歸地解釋嵌套圓括號。遞歸提取字符串中嵌套括號的內容
所以對於「((AB)啊(一二))PI」,我想,要翻譯成以下結構:
[
[
[
"a",
"b"
],
"ugh",
[
"1",
"2"
],
]
"pi"
]
爲此,我寫了下面的函數:
function shitshow(hell) {
var ssparts = [];
var done = false;
for (i in hell) {
let part = hell[i];
switch(part) {
case "(":
ssparts.push(shitshow(hell.slice(i+1)));
break;
case ")":
done = true;
break;
default:
ssparts.push(part);
}
if (done) break;
}
return ssparts;
}
console.log(shitshow("((developer or engineer) or (nurse or doctor)) and manager"));
它不起作用。它返回我的陣列(我在節點4測試這個):
[
"",
[
"doctor"
],
[],
"developer",
"or",
"engineer"
]
被這個搏鬥了一會兒。有任何想法嗎?
編輯:由於@Oriol在這篇文章的評論下文提到的,我貼的代碼不產生我貼的輸出。這是因爲我忘記提及/包括將RegEx的初始字符串轉換爲單詞和非字母數字符號的數組。爲此事道歉。由於@Oriol已經發布了一個工作解決方案,因此我將此通知包含在內,而不是更新我的代碼,以便他的發佈解決方案能夠成功。
愛那些函數名 – Derek
沒有辦法,你的代碼產生的輸出。您正在向數組推送單個字符。 – Oriol
@Oriol好的一點,我忘了補充說我使用RegEx將字符串拆分爲一個單詞數組並且沒有字母符號。只要我再次在我的筆記本電腦上就會更新。 – dylan