2016-11-21 6 views
1

入れ子のlodash findを使用すると、配列内の配列から要素を取得する方法はありますか?lodashを使用して配列内の配列から要素を取得

私は、各要素に子の配列を持つグループの配列を持っています。すべての子供はユニークなids(グループ間でさえ)を持っています。 私は値== idを持つ子供のホールドを取得する必要があり、今、私は次のことをやっている:まず、私は必要なグループ検索

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

  2. をそれから私は得ます子供:

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

これを達成するためのより効率的でエレガントな方法はありますか?

+0

なぜlodashを行うための別の方法がありますから見つけますか?ネイティブのjavascript(filter()、map()など)で十分ではありませんか? –

+0

いいえ、私たちはプロジェクトでそれを使用します:-) – Nat

答えて

4
子供によって

フラットグループと結果

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

この使用してマップ()およびフィルタ()

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; 
    } 
}); 
関連する問題