簡體   English   中英

從子數組中獲取父數組

[英]Get parent array from child array

在下面的代碼中,我可以使用current = current[0]輕松進入數組中的子數組。

 var root = [ [ 'Value 1', ] ]; var current = root; current = current[0]; current.push('Value 2'); document.write(JSON.stringify(root));

我怎樣才能做反向和 go 上一個級別? 在此示例中, current將變為:

[['Value 1', 'Value 2']]

我能想到的唯一方法是循環,但重復很可能是有問題的。 我在網上找到的只是循環,最后一句中沒有提到。

編輯

我正在遍歷一個大字符串並將其轉換為一棵樹。 某些字符需要在樹中縮進或單獨的分支,而其他字符則需要縮進並返回父 function。 我已經通過讓current變量按照這里的建議輸入一個新的子數組來實現縮進。 我只需要一種以不同角色退出的方法。

你不能。

Arrays 沒有“父母”或任何東西的概念。 他們不在乎他們的參考資料存放在哪里。 但是,如果您真的需要,您可以使用 arrays 的簡單遞歸 function 設置屬性自己實現“父”的概念 - 見下文:

 var root = [ [ 'Value 1', ] ]; function setParents(root) { for(var i = 0; i < root.length; i++) { if(Array.isArray(root[i])) { root[i].parent = root; setParents(root[i]); } } } setParents(root); var current = root; current = current[0]; current.push('Value 2'); document.write(JSON.stringify(root)); current = current.parent; console.log(current);

這利用了數組屬性在記錄或序列化為 JSON 時不顯示的事實,僅顯示它們的元素。 所以從某種意義上說,它們有點“隱藏”。 這有點hacky,但可以為你工作。

但是,我建議您簡單地避免覆蓋current - 並沒有真正需要像 cursor 遍歷某些層次結構那樣使用它。

只需在設置當前變量之前按下即可。

 var root = [ [ 'Value 1', ] ]; var current = root; root.push("AAA"); current = current[0]; current.push('Value 2'); document.write(JSON.stringify(root));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM