2017-05-18 8 views
1

lodashを使用して、すべての一致する要素のインデックスの配列を取得する方法は?一例として、 :Lodash、一致するすべての要素のインデックスを見つける

Animals = [{Name: 'Dog', Id: 0}, 
      {Name: 'Cat', Id: 1}, 
      {Name: 'Mouse', Id: 2}, 
      {Name: 'Horse', Id: 3}, 
      {Name: 'Pig', Id: 3}] 

そして私はId == 3を持つすべての要素のインデックスを見つけたいです。

期待出力

Indexes = [3,4]; 
+0

何らかのループが必要なような音です。 –

+0

他に方法はありませんか? –

+0

'_.each'はループです。 –

答えて

0

は、私が最もストレートな方法は、それを打破することだと思う:1)私たちは3のIDを持っているどのオブジェクトを見つける必要がある、2)他のすべてを取り除きます、および3)私たちが興味を持っているインデックスをつかむ

_.chain(animals) 
    .map((animal, i)=> [i, animal.id === 3]) 
    .filter(pair=> pair[1]) 
    .map(pair=> pair[0]) 
    .value(); 
0
_.filter(
    _.map(Animals, (animal, index) => animal.id === 3 ? index : -1), 
    (index) => index >= 0 
) 

編集:animal.id === 3は、上記の質問で定義されたフィルタ条件です。

+0

あなたのコード行が何をしているのか、答えにいくつかの文脈を追加してください。それが良い解決策であれば、これは将来の訪問者を助けるでしょう。 – disinfor

関連する問題