๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฅ– Bread Basics/Flutter

ํ˜•๋ณ€ํ™˜, map, where, reduce/fold, ์ฒด์ด๋‹

by BreadDev 2025. 4. 25.
728x90

์•„ ์žฌ๋ฐŒ๋‹ค. ์ฝ”๋”ฉ ์žฌ๋ฐŒ๋‹ค~

void main() {
  List<String> blackPink = ['๋กœ์ œ', '์ง€์ˆ˜','๋ฆฌ์‚ฌ', '์ œ๋‹ˆ', '์ œ๋‹ˆ'];
  
  print(blackPink);
  print(blackPink.asMap());
  print(blackPink.toSet());
  
  Map blackPinkMap = blackPink.asMap();
  
  print(blackPinkMap.keys);
  print(blackPinkMap.keys.toList());
  print(blackPinkMap.values);
  print(blackPinkMap.values.toList());

  Set blackPinkSet = Set.from(blackPink);
  
  print(blackPinkSet.toList());
}
----------------------------------------------------------------
void main() {
  List<String> blackPink = ['๋กœ์ œ', '์ง€์ˆ˜','๋ฆฌ์‚ฌ', '์ œ๋‹ˆ'];
  
  final newBlackPink = blackPink.map((x){
    return '๋ธ”๋ž™ํ•‘ํฌ $x';
  });

  print(blackPink);
  print(newBlackPink);
  print(newBlackPink.toList());
  
  final newBlackPink2 = blackPink.map((x) => '๋ธ”๋ž™ํ•‘ํฌ $x');
  print(newBlackPink2);
  print(newBlackPink2.toList());
  
  print(blackPink == blackPink);
  print(newBlackPink == blackPink);
  print(newBlackPink == newBlackPink2);
  
  String number = '13579';
  
  final parsed = number.split('').map((x) => '$x.jpg').toList();
  
  print(parsed);
}
----------------------------------------------------------------
void main() {
  Map<String, String> harryPotter = {
    'Harry Potter': 'ํ•ด๋ฆฌํฌํ„ฐ',
    'Ron Weasley': '๋ก  ์œ„์ฆ๋ฆฌ',
    'Hermione Granger': 'ํ—ค๋ฅด๋ฏธ์˜จ๋А ๊ทธ๋ ˆ์ธ์ €',
  };

  print(harryPotter);

  final result = harryPotter.map(
    (key, value) => MapEntry('Harry Potter Character $key', 'ํ•ด๋ฆฌํฌํ„ฐ ์บ๋ฆญํ„ฐ $value'),
  );

  print(result);

  final keys = harryPotter.keys.map((x) => 'HPC $x').toList();
  final values = harryPotter.values.map((x) => 'ํ•ด๋ฆฌํฌํ„ฐ $x').toList();

  print(keys);
  print(values);
}
----------------------------------------------------------------
void main() {
  Set blackPinkSet = {'๋กœ์ œ', '์ง€์ˆ˜', '์ œ๋‹ˆ', '๋ฆฌ์‚ฌ'};

  final newSet = blackPinkSet.map((x) => '๋ธ”๋ž™ํ•‘ํฌ $x').toSet();

  print(newSet);
  
  List<Map<String, String>> people = [
    {
      'name' : '๋กœ์ œ',
      'group' : '๋ธ”๋ž™ํ•‘ํฌ',
    },
    {
      'name' : '์ง€์ˆ˜',
      'group' : '๋ธ”๋ž™ํ•‘ํฌ',
    },    
    {
      'name' : 'RM',
      'group' : 'BTS',
    },
    {
      'name' : '๋ท”',
      'group' : 'BTS',
    },
  ];
  
  print(people);
  
  final blackPink = people.where((x) => x['group'] == '๋ธ”๋ž™ํ•‘ํฌ').toList();
  print(blackPink);
}
----------------------------------------------------------------
void main() {
  List<int> numbers = [1, 3, 5, 7, 9];

  final result = numbers.reduce((prev, next) => prev + next);
  print(result);

  List<String> words = ['์•ˆ๋…•ํ•˜์„ธ์š” ', '์ €๋Š” ', '๋ธŒ๋ž˜๋“œ์ž…๋‹ˆ๋‹ค.'];
  final sentence = words.reduce((prev, next) => prev + next);
  print(sentence);

  final sum = numbers.fold<int>(0, (prev, next) => prev + next);
  print(sum);

  final sentence2 = words.fold<String>('', (prev, next) => prev + next);
  print(sentence2);

  final count = words.fold<int>(0, (prev, next) => prev + next.length);
  print(count);
}
----------------------------------------------------------------
void main() {
  List<int> even = [2, 4, 6, 8];

  List<int> odd = [1, 3, 5, 7];

  // cascading operator
  print([even, odd]);
  print([...even, ...odd]);
  print(even);
  print([...even]);
  print(even == [...even]);

  List<Map<String, String>> people = [
    {'name': '๋กœ์ œ', 'group': '๋ธ”๋ž™ํ•‘ํฌ'},
    {'name': '์ง€์ˆ˜', 'group': '๋ธ”๋ž™ํ•‘ํฌ'},
    {'name': 'RM', 'group': 'BTS'},
    {'name': '๋ท”', 'group': 'BTS'},
  ];

  print(people);

  final parsedPeople =
      people.map((x) => Person(name: x['name']!, group: x['group']!)).toList();

  print(parsedPeople);

  for (Person person in parsedPeople) {
    print(person.name);
    print(person.group);
  }

  final bts = parsedPeople.where((x) => x.group == 'BTS').toList();
  print(bts);

  final result = people
      .map((x) => Person(name: x['name']!, group: x['group']!))
      .where((x) => x.group == 'BTS')
      .fold<int>(0, (prev, next) => prev + next.name.length);
  print(result);
}

class Person {
  final String name;
  final String group;

  Person({required this.name, required this.group});

  @override
  String toString() {
    return 'Person(name: $name, group: $group)';
  }
}
[๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ, ์ œ๋‹ˆ]
{0: ๋กœ์ œ, 1: ์ง€์ˆ˜, 2: ๋ฆฌ์‚ฌ, 3: ์ œ๋‹ˆ, 4: ์ œ๋‹ˆ}
{๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ}
(0, 1, 2, 3, 4)
[0, 1, 2, 3, 4]
(๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ, ์ œ๋‹ˆ)
[๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ, ์ œ๋‹ˆ]
[๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ]
----------------------------------------------------------------
[๋กœ์ œ, ์ง€์ˆ˜, ๋ฆฌ์‚ฌ, ์ œ๋‹ˆ]
(๋ธ”๋ž™ํ•‘ํฌ ๋กœ์ œ, ๋ธ”๋ž™ํ•‘ํฌ ์ง€์ˆ˜, ๋ธ”๋ž™ํ•‘ํฌ ๋ฆฌ์‚ฌ, ๋ธ”๋ž™ํ•‘ํฌ ์ œ๋‹ˆ)
[๋ธ”๋ž™ํ•‘ํฌ ๋กœ์ œ, ๋ธ”๋ž™ํ•‘ํฌ ์ง€์ˆ˜, ๋ธ”๋ž™ํ•‘ํฌ ๋ฆฌ์‚ฌ, ๋ธ”๋ž™ํ•‘ํฌ ์ œ๋‹ˆ]
(๋ธ”๋ž™ํ•‘ํฌ ๋กœ์ œ, ๋ธ”๋ž™ํ•‘ํฌ ์ง€์ˆ˜, ๋ธ”๋ž™ํ•‘ํฌ ๋ฆฌ์‚ฌ, ๋ธ”๋ž™ํ•‘ํฌ ์ œ๋‹ˆ)
[๋ธ”๋ž™ํ•‘ํฌ ๋กœ์ œ, ๋ธ”๋ž™ํ•‘ํฌ ์ง€์ˆ˜, ๋ธ”๋ž™ํ•‘ํฌ ๋ฆฌ์‚ฌ, ๋ธ”๋ž™ํ•‘ํฌ ์ œ๋‹ˆ]
true
false
false
[1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]
----------------------------------------------------------------
{Harry Potter: ํ•ด๋ฆฌํฌํ„ฐ, Ron Weasley: ๋ก  ์œ„์ฆ๋ฆฌ, Hermione Granger: ํ—ค๋ฅด๋ฏธ์˜จ๋А ๊ทธ๋ ˆ์ธ์ €}
{Harry Potter Character Harry Potter: ํ•ด๋ฆฌํฌํ„ฐ ์บ๋ฆญํ„ฐ ํ•ด๋ฆฌํฌํ„ฐ, Harry Potter Character Ron Weasley: ํ•ด๋ฆฌํฌํ„ฐ ์บ๋ฆญํ„ฐ ๋ก  ์œ„์ฆ๋ฆฌ, Harry Potter Character Hermione Granger: ํ•ด๋ฆฌํฌํ„ฐ ์บ๋ฆญํ„ฐ ํ—ค๋ฅด๋ฏธ์˜จ๋А ๊ทธ๋ ˆ์ธ์ €}
[HPC Harry Potter, HPC Ron Weasley, HPC Hermione Granger]
[ํ•ด๋ฆฌํฌํ„ฐ ํ•ด๋ฆฌํฌํ„ฐ, ํ•ด๋ฆฌํฌํ„ฐ ๋ก  ์œ„์ฆ๋ฆฌ, ํ•ด๋ฆฌํฌํ„ฐ ํ—ค๋ฅด๋ฏธ์˜จ๋А ๊ทธ๋ ˆ์ธ์ €]
----------------------------------------------------------------
{๋ธ”๋ž™ํ•‘ํฌ ๋กœ์ œ, ๋ธ”๋ž™ํ•‘ํฌ ์ง€์ˆ˜, ๋ธ”๋ž™ํ•‘ํฌ ์ œ๋‹ˆ, ๋ธ”๋ž™ํ•‘ํฌ ๋ฆฌ์‚ฌ}
[{name: ๋กœ์ œ, group: ๋ธ”๋ž™ํ•‘ํฌ}, {name: ์ง€์ˆ˜, group: ๋ธ”๋ž™ํ•‘ํฌ}, {name: RM, group: BTS}, {name: ๋ท”, group: BTS}]
[{name: ๋กœ์ œ, group: ๋ธ”๋ž™ํ•‘ํฌ}, {name: ์ง€์ˆ˜, group: ๋ธ”๋ž™ํ•‘ํฌ}]
----------------------------------------------------------------
25
์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ๋ธŒ๋ž˜๋“œ์ž…๋‹ˆ๋‹ค.
25
์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ๋ธŒ๋ž˜๋“œ์ž…๋‹ˆ๋‹ค.
16
----------------------------------------------------------------
[[2, 4, 6, 8], [1, 3, 5, 7]]
[2, 4, 6, 8, 1, 3, 5, 7]
[2, 4, 6, 8]
[2, 4, 6, 8]
false
[{name: ๋กœ์ œ, group: ๋ธ”๋ž™ํ•‘ํฌ}, {name: ์ง€์ˆ˜, group: ๋ธ”๋ž™ํ•‘ํฌ}, {name: RM, group: BTS}, {name: ๋ท”, group: BTS}]
[Person(name: ๋กœ์ œ, group: ๋ธ”๋ž™ํ•‘ํฌ), Person(name: ์ง€์ˆ˜, group: ๋ธ”๋ž™ํ•‘ํฌ), Person(name: RM, group: BTS), Person(name: ๋ท”, group: BTS)]
๋กœ์ œ
๋ธ”๋ž™ํ•‘ํฌ
์ง€์ˆ˜
๋ธ”๋ž™ํ•‘ํฌ
RM
BTS
๋ท”
BTS
[Person(name: RM, group: BTS), Person(name: ๋ท”, group: BTS)]
3

'๐Ÿฅ– Bread Basics > Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Dart ์–ธ์–ด ๊ธฐ๋ณธ๊ธฐ ๋ฐฐ์šฐ๊ธฐ  (0) 2025.04.28
mixin, sealed, base ํด๋ž˜์Šค  (0) 2025.04.25
Record(ํŠœํ”Œ), Destructuring  (0) 2025.04.25
Future, async, await, stream, listen, sink, yield  (0) 2025.04.25
@ovveride  (0) 2025.04.24
OOP์˜ ์ƒ์†!!  (0) 2025.04.24
[Flutter] Hot Reload๋ž€?  (0) 2025.04.23