2016-09-08 2 views
2

여행의 전체 목록을 보여주는 투어라는 구성 요소가 있습니다. 좋아하는 매개 변수가 true로 설정된 투어를 표시해야하는 즐겨 찾기라는 사이트에 대한 링크가 있으며 투어 구성 요소와 동일한 것은 제외하고 표시해야합니다.각도 2로 배열을 필터링하는 모범 사례

이 작업을 수행하는 가장 좋은 방법이 있습니까? 나는

  1. 이 루트 경로에 따라 트리거있어 사용자 정의 파이프를 만들기 경로의 값을 기준으로이 구성 요소와 필터에 별도의 경로를 만들 수있는 몇 가지 방법을 생각할 수

그러나 어느 쪽도 나에게 최적이되지 않습니다.

답변

3

특히 내가 가진 것과 같은 경우에만 filter 기능을 독점적으로 사용합니다.

this.tours.filter((item) => { 
      return (item.favorite === true) 
     }) 

을 또는 당신이 favorite 매개 변수와 함께 filter 기능을 원한다면, 당신이 할 수있는 : 당신이 각 반복에 favorite 속성 투어의 배열이있는 경우, 당신이 할 수

filterFavorites(favorite : boolean): Array<string>{ 
     return tours.filter((item) => { 
      return (favorite)? item : null; 
     }) 
} 

이것이 도움이되는지 알려주세요.

편집 : 파이프를 만들 수는 있지만, 다른 장소에서 파이프를 여러 번 사용하지 않는다면 과장 될 수 있다고 생각합니다.

+1

그건 의미가 있습니다. 내가 관찰 할 수있는 내 데이터 집합을 받고 구독을 사용하여 로컬 값으로 설정하십시오 (즉, result.subscribe (res => this.locations = result) 이 데이터를 NgOnInit에서 필터링하려고하면 데이터로 빈 배열을 얻습니다 아직로드되지 않았습니다. 어떤 문제를 어떻게 처리해야합니까? – user3642173

+0

subscribe 함수 내에서 필터링을 시도 할 수 있습니다. 때로는 데이터를 catch합니다.'result.subscribe (res => this.locations = result; this.favorites = this.locations .filter ... (etc))' – jhhoff02

+0

이것은 기술적으로 작동하지만 코드에서 다른 필드에서 구독하려는 필드를 얻습니다. 제안 된 방법을 사용하면 위치를 제외한 모든 값을 필터링 할 수 있습니다. 그러나, 간단한지도 함수와 console.log 위치를 쓰면 정확하게 설정됩니다. 이것은 전체 스크립트입니다 :(위치) => { return locations.map ((location) => { location.like = af.database.object ('/ trips '/likes/$ {this.uid}/$ {location. $ key}'); 반환 위치; }) }); – user3642173