Top 10 Array utility methods you should know (Dart) šÆ

As part of my venture into client-side application development with Dart, I began exploring the way one could go about working with Lists or Array types. Aside from the documentation being comprehensive, I was also able to find support on the StackOverflow community and successfully achieved what was needed.
ā Continue reading on my blog
In todayās article weāll be looking at the ābatteries-includedā notion of Dart, in particular the inbuilt utilities for working with Lists. Iāve hand-picked 10 of the most common ones you show know for your next app. Iāve also prepared the example snippets so you could play with those yourself š
So, shall we begin?
1. forEach()
Runs a function on each element in the list
var fruits = [ābananaā, āpineappleā, āwatermelonā];
fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon
2. map()
Produces a new list after transforming each element in a given list
var mappedFruits = fruits.map((fruit) => āI love $fruitā).toList();
print(mappedFruits); // => ['I love banana', āI love pineappleā, āI love watermelonā]
3. contains()
Checks to confirm that the given element is in the list
var numbers = [1, 3, 2, 5, 4];
print(numbers.contains(2)); // => true
4. sort()
Order the elements based on the provided ordering function
numbers.sort((num1, num2) => num1 - num2); // => [1, 2, 3, 4, 5]
5. reduce(), fold()
Compresses the elements to a single value, using the given function
var sum = numbers.reduce((curr, next) => curr + next);
print(sum); // => 15const initialValue = 10;
var sum2 = numbers.fold(initialValue, (curr, next) => curr + next);
print(sum2); // => 25
6. every()
Confirms that every element satisfies the test
List<Map<String, dynamic>> users = [
{ ānameā: āJohnā, āageā: 18 },
{ ānameā: āJaneā, āageā: 21 },
{ ānameā: āMaryā, āageā: 23 },
];var is18AndOver = users.every((user) => user[āageā] >= 18);
print(is18AndOver); // => true
var hasNamesWithJ = users.every((user) => user[ānameā].startsWith('J'));
print(hasNamesWithJ); // => false
7. where(), firstWhere(), singleWhere()
Returns a collection of elements that satisfy a test.
// See #6 for users list
var over21s = users.where((user) => user[āageā] > 21);
print(over21s.length); // => 1var nameJ = users.firstWhere((user) => user[ānameā].startsWith(āJā), orElse: () => null);
print(nameJ); // => {name: John, age: 18}var under18s = users.singleWhere((user) => user[āageā] < 18, orElse: () => null);
print(under18s); // => null
firstWhere()
returns the first match in the list, while singleWhere()
returns the first match provided there is exactly one match.
8. take(), skip()
Returns a collection while including or skipping elements
var fiboNumbers = [1, 2, 3, 5, 8, 13, 21];
print(fiboNumbers.take(3).toList()); // => [1, 2, 3]
print(fiboNumbers.skip(5).toList()); // => [13, 21]
print(fiboNumbers.take(3).skip(2).take(1).toList()); // => [3]
9. List.from()
Creates a new list from the given collection
var clonedFiboNumbers = List.from(fiboNumbers);
print(āCloned list: $clonedFiboNumbersā);
As of Dart 2.0, the new
keyword is optional when instantiating objects.
10. expand()
Expands each element into zero or more elements
var pairs = [[1, 2], [3, 4]];
var flattened = pairs.expand((pair) => pair).toList();
print(āFlattened result: $flattenedā); // => [1, 2, 3, 4]var input = [1, 2, 3];
var duplicated = input.expand((i) => [i, i]).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]
Conclusion
I hope this has been insightful and if this is your first exposure to Dart, read my first steps tutorial to grasp the basics. The example snippets for this article are available on DartPad.
I also run a YouTube channel teaching subscribers to develop full-stack applications with Dart. Become a subscriber to receive updates when new videos are released.
Like, share and follow meš for more content on Dart.
And this concludes the tutorial. Thanks for reading.
ā Read more Dart tutorials on my blog
What to check out next
āļø Subscribe to CodeBurstās once-weekly Email Blast, š¦ Follow CodeBurst onTwitter, view šŗļø The 2018 Web Developer Roadmap, and šøļø Learn Full Stack Web Development.