スレッド化されたコメントがたくさんあります。コメントが次のようになっているとします。
{
_id: [ObjectID],
parentid: [ObjectID],
...
}
そして、dbから取得したすべてのコメントの単一の大きな配列があります。
comments = [comment1, comment2, comment3]
任意のコメントの返信を取得するために、次のようなヘルパー関数があります。
function getReplies(comment, replies) {
return replies.filter(function(reply) {
return reply.parentid === comment._id
}
}
getReplies
ただし、多くのコメントがすでに処理されている場合(それぞれに親が1つしかない場合)、またはコメントに応答が1つしかない場合、またはまったくない場合(コメントスレッドの奥深く)に、この関数が常に配列全体をチェックするという事実に不安を感じています。
これは過度に最適化されていますが、皆さんがこの問題をどのように解決するかを知りたいと思います。もっと洗練された解決策がない限り、この機能を変更することはないと思います。同じコメントを不必要に2回処理しないように、このヘルパーをどのように構成しますか?