본문 바로가기

Dart

[Dart] Map 고급 - entries, asMap

map.entries 를 이용하여 iterable 객체로 변환하여 List 객체의 내장함수를 사용하여 전처리 함.

 

void main() {
  Map map = {'Apple':'사과','Banana':'바나나','Kiwi':'키위',};
  
  print(map.keys);   # Iterable 객체임
  print(map.values); # Iterable 객체임
  
  print(map.keys.toList());    # List 객체임
  print(map.values.toList());  # List 객체임
  print('---------- 01 ----------');
  
  print('map.keys is Iterable');
  print(map.keys is Iterable);         # true
  print("map.keys.toList() is List");
  print(map.keys.toList() is List);    # true
  print('---------- 02 ----------');
  
//   final tmp = map.entries;
//   print(tmp is Iterable); -> true
  
//Mapping - map => (entry)를 이용해서 키/값을 추출가능
  final newIterable = map.entries.map((entry){
//     print(entry.key);
//     print(entry.value);
    return (entry.key +'|'+ entry.value);
  });
  print(newIterable);
  print('---------- 03 ----------');
  print("newIterable is Iterable");
  print(newIterable is Iterable);      # true
  print('---------- 04 ----------');
  
  
  //foreach, reduce, fold
  map.entries.forEach((entry){
    final key = entry.key;
    final value = entry.value;
    print('"$key" 는 한글로 "$value" 입니다.');
  });
  print('---------- 05 ----------');
  
  final num total = map.entries.fold(0, (total, entry) {
    return total + entry.key.length;
  });
  print(total);
  
  print('---------- 06 ----------');

  // 리스트에서 인덱스를 가져오는 방법
  List <int> nums = [10,20,30,40,50];
  
  final newIterable2 = nums.map((item){
    return 'value is $item.';
  });
  print(newIterable2);
  print('---------- 07 ----------');
  
  final newIterable3 = nums.asMap().entries.map((entry){
    final index = entry.key;
    final value = entry.value;
    
    return ('{$index:$value}');
  });
  print(newIterable3.toList());
  print('---------- 08 ----------');
  
  newIterable3.forEach((value){
    print(value);
  });
  
}

--------------------------------------------[result]

(Apple, Banana, Kiwi)
(사과, 바나나, 키위)
[Apple, Banana, Kiwi]
[사과, 바나나, 키위]
---------- 01 ----------
map.keys is Iterable
true
map.keys.toList() is List
true
---------- 02 ----------
true
(Apple|사과, Banana|바나나, Kiwi|키위)
---------- 03 ----------
newIterable is Iterable
true
---------- 04 ----------
"Apple" 는 한글로 "사과" 입니다.
"Banana" 는 한글로 "바나나" 입니다.
"Kiwi" 는 한글로 "키위" 입니다.
---------- 05 ----------
15
---------- 06 ----------
(value is 10., value is 20., value is 30., value is 40., value is 50.)
---------- 07 ----------
[{0:10}, {1:20}, {2:30}, {3:40}, {4:50}]
---------- 08 ----------
{0:10}
{1:20}
{2:30}
{3:40}
{4:50}

'Dart' 카테고리의 다른 글

[Dart] List 고급 - forEach, map, fold, reduce  (0) 2021.05.28
[Dart] Class - Cascade  (0) 2021.05.27
[Dart] Class - interface  (0) 2021.05.27
[Dart] Class - super, this  (0) 2021.05.27
[Dart] Class - Static  (0) 2021.05.27