2016-11-21 3 views
1

Gibt es eine Möglichkeit, ein Element aus dem inneren Array im Array abzurufen, wenn Sie zum Beispiel verschachteltes lodash find verwenden?Element aus innerem Array in Array mit lodash abrufen

Ich habe ein Array von Gruppen, von denen jedes Element Array von Kindern hat. Alle Kinder haben einzigartige IDs (auch zwischen Gruppen). Ich brauche halten, ein Kind zu bekommen, mit id == Wert und jetzt mache ich folgendes:

  1. Zum einen retrieve ich brauchte Gruppe:

    var group = _(groups).find(g => {return _(g.children).find(c => {return c.id == value})});

  2. Dann bekomme ich die Kind:

    var child = _(group.children).find(c => {return c.id == value});

Gibt es einen effizienteren und eleganteren Weg, dies zu erreichen?

+0

warum lodash? Native Javascript (Filter(), Karte(), etc.) sind nicht genug? –

+0

keine Ahnung, wir benutzen es einfach in unserem Projekt :-) – Nat

Antwort

4

Flach Gruppen von Kindern und finden vom Ergebnis

_(groups) 
    .flatMap('children') 
    .find({id: value}) 
    .value(); 
1

Es gibt einen anderen Weg, dies mit Karte zu tun() und Filter()

var filteredArray = []; 

_.map(group, function(groupValue) { 
    var groupChildren = groupValue.children; 
    var filteredChild = _.filter(groupChildren, function(child) { 
    return child.id = value 
    }); 
    if(filteredChild.length != 0) { 
    filteredArray.push(filteredChild[0]); 
    return groupValue; 
    } else { 
    return groupValue; 
    } 
});