2016-01-27 57 views
-1

我有以下結果由MongoDB.aggregate:從嵌套數組中獲取獨特元素的JS模式是什麼?

[{ 
    _id: ObjectId(1), 
    _author: ObjectId(2), 
    comments: [ 
     { 
     _author: ObjectId(2), 
     text: '...' 
     }, 
     { 
     _author: ObjectId(3), 
     text: '...1' 
     }, 
     { 
     _author: ObjectId(3), 
     text: '...2' 
     }... 
    ] 
}...] 

我需要得到所有唯一作者所有elemnts _author場(包括嵌套):

var uniqAuthors = magicFunction(result) // [ObjectId(2), ObjectId(3)] ; 

什麼是最好的和緊湊的方式使它與純JS?

回答

1

Array.prototype.reduce可以幫助你:

var unique = result[0].comments.reduce(function(uniqueAuthors, comment) { 
    if (uniqueAuthors.indexOf(comment._author) === -1) { 
    uniqueAuthors.push(comment._author); 
    } 
    return uniqueAuthors; 
}, []); 
//Verify the author from document 
if (unique.indexOf(result[0]._author) === -1) { 
    uniqueAuthors.push(result[0]._author); 
} 
+0

謝謝,可以編輯你的答案推也從父文檔的作者? – Erik

+0

@Erik答案已更新。 –

+0

感謝您的幫助! – Erik