Filter
자바스크립트의 배열 타입의 변수에서 Filter()를 사용하곤한다.
하지만 왜 다트에는 없을까? 찾아보았더니 where이라는 함수가 이를 대신하고 있다.
보시다시피 파생 함수가 많은데 메인 동작은 동일하고 함수명으로 차이점을 대략 유추할 수 있다.
Where
where의 주요 동작은 자바스크립트의 filter와 같이 각 요소들을 조건으로 걸러 새로운 배열을 만드는 함수이다.
조금 다른 점이 있다면 index 값을 제공해주지 않는다.
아래는 배열의 요소 중 짝수만을 골라 새로운 배열을 생성하는 예시이다.
where은 return 값이 배열이므로 기존 배열을 수정하길 원하면 retainWhere을 사용해야한다.
List list = [...]
List evenNumbers = list.where((element) {
retrun element % 2 == 0;
});
RetainWhere
retainWhere은 해당 배열 자체를 수정한다.
list.where((element) {
retrun element % 2 == 0;
});
RemoveWhere
조건에 부합하는 요소를 해당 배열에서 삭제한다.
Where Type
list = list.whereType<String>
배열 요소의 타입을 <> 의 타입으로 강제 변환시켜 새로운 배열로 return 한다.
이외에 first, last, single, skip, take가 있지만 모두 배열의 요소를 조건으로 걸러내는 동작은 동일하므로
필요에 따라 함수 설명을 읽고 사용하면 좋을 것이다.
'Flutter > Dart' 카테고리의 다른 글
[플러터/다트] 삼항연산자와 nullish coalescing (0) | 2021.01.27 |
---|---|
[플러터/다트]map() 함수 (0) | 2021.01.23 |
[플러터/다트] 메모리 주소로 전달되는 List (0) | 2021.01.23 |
[다트/플러터] Get, Set 타입 (0) | 2021.01.20 |
[다트/플러터] 클래스 생성자 (0) | 2021.01.19 |