我需要遞歸地瀏覽對象樹,直到找到匹配的元素并將一些數據推送到其中。這是我的結構的簡化示例:post.comments = [ { _id: a, content: 'Foo', replies: [ { _id: aa, content: 'Foobar', replies: [ { _id: aaa, content: 'Foobarbaz', replies: [...] } ] }, { _id: ab, content: 'Barfoo', replies: [...] } ] }, { _id: b, content: 'Bar', replies: [...] }, { _id: c, content: 'Bar', replies: [...] }, ...]理論上,回復可以無限嵌套。這是我的遞歸函數:function findNode(comments, id, data) { for (let key in comments) { currentNode = comments[key] if (currentNode._id.equals(id)) { currentNode.replies.push(data) break; } else { if (currentNode.replies.length) { findNode(currentNode.replies, id, data) } else { continue; } } }}findNode(post.comments, id, comment)這個函數似乎只讀取第一個注釋對象的子節點,然后當它到達一個沒有子節點的節點時以“無法讀取未定義的屬性“等于”退出(但我認為continue;應該將它從那個樹?)我不知道 for 循環和遞歸是什么?編輯:對不起!string.equals(id)來自 Mongoose - 它相當于string == id這個示例數組的用途。
for...in 循環遍歷對象數組返回“無法讀取未定義的屬性”
米琪卡哇伊
2021-06-30 06:08:57