2017-05-18 3 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