2017-05-18 9 views
1

Mit lodash, wie erhält man das Array von Indizes aller passenden Elemente? Als Beispiel:Lodash, Indizes aller übereinstimmenden Elemente finden

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

Und dann will ich Indizes aller Elemente mit Id == 3 finden.

Erwartete Ausgabe:

Indexes = [3,4]; 
+0

Klingt, als ob Sie eine Schleife von einer Art brauchen. –

+0

gibt es keinen anderen Weg? –

+0

'_.each' ist eine Schleife. –

Antwort

0

Ich denke, die meisten geradlinig Weg, es zu brechen: 1) wir, um herauszufinden, müssen die eine ID von 3-Objekte haben, erhalten 2) alles andere los greifen, und 3) die Indizes sind wir interessiert

_.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 
) 

bearbeiten. animal.id === 3 die Filterbedingung in der Frage oben definiert ist.

+0

Bitte fügen Sie der Antwort einen Kontext hinzu, was Ihre Codezeile betrifft. Dies wird zukünftigen Besuchern helfen, wenn es eine gute Lösung ist. – disinfor

Verwandte Themen