Dart 언어 오답노트 : 30. where()

샤워실의 바보·2023년 10월 27일
0
post-thumbnail

Dart의 where 메서드와 JavaScript의 filter 메서드는 매우 유사한 기능을 수행합니다. 두 메서드 모두 Iterable (Dart에서) 또는 Array (JavaScript에서) 의 요소를 순회하며 주어진 조건 함수에 따라 요소들을 필터링하는 역할을 합니다.

다음은 Dart에서 where 메서드를 사용하는 예시입니다:

List<int> numbers = [1, 2, 3, 4, 5];
Iterable<int> evenNumbers = numbers.where((number) => number % 2 == 0);
print(evenNumbers.toList());  // [2, 4]

여기서 where 메서드는 리스트의 각 숫자에 대해 익명 함수 (number) => number % 2 == 0을 실행하여 짝수만 필터링합니다.

비슷하게, JavaScript에서 filter 메서드를 사용하는 예시는 다음과 같습니다:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(number => number % 2 === 0);
console.log(evenNumbers);  // [2, 4]

JavaScript의 filter 메서드 역시 배열의 각 요소에 대해 화살표 함수 number => number % 2 === 0을 실행하여 짝수만 필터링합니다.

두 예시 모두에서, where/filter 메서드는 원본 배열/리스트를 변경하지 않고, 새로운 Iterable/Array를 반환합니다. 이러한 특성 덕분에 함수형 프로그래밍 패러다임을 따르며, 데이터의 불변성을 유지할 수 있습니다.

결론적으로, Dart의 where 메서드와 JavaScript의 filter 메서드는 동일한 패러다임을 따르며, 컬렉션에서 특정 조건을 만족하는 요소들만 추출하는데 사용됩니다.

이 Dart 프로그램에서는 List 안에 Map이 포함된 구조를 사용해 사람들의 정보를 저장하고 있습니다. 각 Map은 사람의 이름과 그들이 속한 그룹을 나타냅니다.

void main() {
  List<Map<String, String>> people = [
    
    {
      'name': '로제',
      'group': '블랙핑크',
    },
    {
      'name': '지수',
      'group': '블랙핑크',
    },
    {
      'name': 'RM',
      'group': 'BTS',
    },
    {
      'name': '뷔',
      'group': 'BTS',
    },
  ];
  
  print(people);
  
  final blackPinkMap = people.where((item) => item['group'] == '블랙핑크').toList();
  final bts = people.where((item) => item['group'] == 'BTS').toList();
  
  print(blackPinkMap);
  print(bts);
}
  1. people: 이 변수는 List<Map<String, String>> 타입으로 선언되어 있으며, 각각의 Map에는 'name'과 'group'이라는 키와 그에 대응하는 문자열 값이 저장되어 있습니다.

  2. print(people): 이 코드는 people 리스트 전체를 출력합니다.

  3. blackPinkMapbts: 이 두 변수는 people 리스트를 where 메소드를 사용해 필터링하여 특정 그룹의 멤버만 담고 있는 새로운 리스트를 생성합니다.

    • blackPinkMap: 'group' 값이 '블랙핑크'인 요소만 포함합니다.
    • bts: 'group' 값이 'BTS'인 요소만 포함합니다.
  4. print(blackPinkMap)print(bts): 이 두 코드는 필터링된 리스트를 출력합니다.

결과적으로, 이 프로그램은 전체 사람 목록과 그 중에서 '블랙핑크'와 'BTS' 그룹에 속한 사람들의 목록을 출력합니다. 이런 방식으로 데이터를 구조화하고 필터링하는 것은 정보를 더 쉽게 관리하고 필요한 데이터만 추출할 수 있게 해줍니다.

profile
공부하는 개발자

0개의 댓글