[Dart] Manipulate Lists/Arrays in Dart

We will learn how to work with Lists using a variety of methods made available in the dart:core library. We will explore the top methods for working with List type collections.

Learn more about Lists at https://api.dartlang.org/stable/2.2.0/dart-core/List-class.html

 

Array to list:

because .map return iterable.

  var fruits = ['banana', 'pineapple', 'orange', 'watermelon', 'apple'];
  var fiboNumbers = [1, 2, 3, 5, 8, 13, 21];
  List<Map<String, dynamic>> users = [
    { 'name': 'John', 'age': 18 },
    { 'name': 'Jane', 'age': 21 },
    { 'name': 'Mary', 'age': 23 },
  ];

    // array to list
    var mappedFruits = fruits.map((fruit) => 'I love $fruit').toList();
    print(mappedFruits);

 

reduce vs fold:

reduce: doesn't provide the init value, but 'fold' does:

  const initialValue = 10;
  var sum2 = fiboNumbers.fold(initialValue, (curr, next) => curr + next);
  print( sum2 );
  
  var sum = fiboNumbers.reduce((curr, next) => curr + next);
  print( sum );

 

filtering:

  var over21s = users.where((user) => user['age'] > 21);
  print( over21s.length );
  
  var nameJ = users.firstWhere((user) => user['name'].startsWith('J'), orElse: () => null);
  print( nameJ );
  
  var under18 = users.singleWhere((user) => user['age'] < 18, orElse: () => {'error': 'Not Found'});
  print( under18 );

 

take & skip:

  print( fiboNumbers.take(3).toList() );
  print( fiboNumbers.skip(5).toList() );
  print( fiboNumbers.take(3).skip(2).take(1).toList() );

 

expend: the same as flatMap in JS

  var flattened = [[1, 2], [3, 4]].expand((pair) => pair).toList();
  print( flattened );
  
  var duplicated = fiboNumbers.expand((i) => [i, i]).toList();
  print( duplicated );

 

posted @ 2019-09-04 15:26  Zhentiw  阅读(208)  评论(0编辑  收藏  举报