Le groupement d'objets, par plusieurs colonnes avec Lodash ou un trait de Soulignement

J'ai de l'objet suivant records:

 {  
   "notes":[  
      {  
         "id":1,
         "description":"hey",
         "userId":2,
         "replyToId":null,
         "postId":2,
         "parentId":null
      },
      {  
         "id":5,
         "description":"hey test",
         "userId":3,
         "replyToId":null,
         "postId":2,
         "parentId":null
      },
      {  
         "id":2,
         "description":"how are you",
         "userId":null,
         "replyToId":2,
         "postId":2,
         "parentId":null,
         "user":null
      }
   ]
}

Je veux de sortie:

2 
  object with id 1
  object with id 2 (because replyToId value is same as userId
3
  object with id 5

Donc, fondamentalement, je veux envisager d'utilisateur et le replyToId valeur sous le même groupe.

J'ai créer mon propre mixin sous lodash, emballage groupBy méthode:

mixin({
    splitGroupBy: function(list, groupByIter){
        if (_.isArray(groupByIter)) {
            function groupBy(obj) {
                return _.forEach(groupByIter, function (key){
                    if ( !!obj[key] ) return obj[key]
                });

            }
        } else {
            var groupBy = groupByIter;
        }

        debugger;

        var groups = _.groupBy(list, groupBy);

        return groups;
    }
});

Appel ressemble à ceci:

_.splitGroupBy(data.notes,['userId', 'replyToId']);

La sortie est à venir sans groupe. Même quand j'ai essayé avec _.map au lieu _.forEach la scission ne s'est pas déroulée correctement.

Pouvez-vous refaire le "JSON" partie de votre question?
Comme une note: MDN: Conditionnellement la définition d'une fonction: Alors que [...]functions can be conditionally defined [...] (depuis ES3), ils sont [...]no longer allowed in ES5 strict. Additionally, this feature does not work consistently cross-browser, so you should not rely on it.[...]
Il a été mis à jour maintenant.

OriginalL'auteur codebased | 2015-04-12